知识大全 关于JSP防范SQL注入攻击
Posted 语句
篇首语:大道之行,天下为公。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 关于JSP防范SQL注入攻击相关的知识,希望对你有一定的参考价值。
关于JSP防范SQL注入攻击 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
上周给别人做了个网站 无意间发现自己的作品有很多漏洞 在短短的 秒就被自己用sql注入法给干了 所以查了一点关于sql注入的资料 并且有点感悟 希望能与新手们分享一下 高手们见笑了!
SQL注入攻击的总体思路 发现SQL注入位置 判断服务器类型和后台数据库类型 确定可执行情况 对于有些攻击者而言 一般会采取sql注入法 下面我也谈一下自己关于sql注入法的感悟
注入法 从理论上说 认证网页中会有型如 select * from admin where username= XXX and password= YYY 的语句 若在正式运行此句之前 如果没有进行必要的字符过滤 则很容易实施SQL注入 如在用户名文本框内输入 abc or = 在密码框内输入 则SQL语句变成 select * from admin where username= abc or = and password= 不管用户输入任何用户名与密码 此语句永远都能正确执行 用户轻易骗过系统 获取合法身份
猜解法 基本思路是 猜解所有数据库名称 猜出库中的每张表名 分析可能是存放用户名与密码的表名 猜出表中的每个字段名 猜出表中的每条记录内容 还有一种方式可以获得你的数据库名和每张表的名 就是通过在形如 ; /news?id= 的方式来通过报错获得你的数据库名和表名!对于jsp而言我们一般采取一下策略来应对 PreparedStatement 如果你已经是稍有水平开发者 你就应该始终以PreparedStatement代替Statement 以下是几点原因 代码的可读性和可维护性 PreparedStatement尽最大可能提高性能 最重要的一点是极大地提高了安全性 到目前为止 有一些人(包括本人)连基本的恶义SQL语法都不知道 String sql = select * from tb_name where name= +varname+ and passwd= +varpasswd+ ;如果我们把[ or = ]作为name传入进来 密码随意 看看会成为什么?
select * from tb_name = or = and passwd = 随意 ;因为 = 肯定成立 所以可以任何通过验证 更有甚者:把[ ;drop table tb_name;]作为varpasswd传入进来 则:select * from tb_name = 随意 and passwd = ;drop table tb_name;有些数据库是不会让你成功的 但也有很多数据库就可以使这些语句得到执行 而如果你使用预编译语句 你传入的任何内容就不会和原来的语句发生任何匹配的关系 (前提是数据库本身支持预编译 但上前可能没有什么服务端数据库不支持编译了 只有少数的桌面数据库 就是直接文件访问的那些只要全使用预编译语句 你就用不着对传入的数据做任何过虑 而如果使用普通的 statement 有可能要对drop ;等做费尽心机的判断和过虑 正则表达式 检测SQL meta characters的正则表达式 /(\\% )|(\\ )|(\\ \\ )|(\\% )|(#)/ix 修正检测SQL meta characters的正则表达式 /((\\% D)|(=))[^\\n]*((\\% )|(\\ )|(\\ \\ )
|(\\% B)|(:))/i 典型的 SQL 注入攻击的正则表达式 /\\w*((\\% )|(\\ ))((\\% F)|o|(\\% F))((\\% )|r|(\\
% ))/ix 检测SQL注入 UNION查询关键字的正则表达式 /((\\% )|(\\ ))union/ix(\\% )|(\\ ) 单
引号和它的hex等值 union union关键字 检测MS SQL Server SQL注入攻击的正则表达式 /exec(\\s|\\+)+(s|x)p\\w+/ix
字符串过滤public static String filterContent(String content) String flt = |and|exec|insert|select|delete|update|count|*|%
|chr|mid|master|truncate|char|declare|;|or| |+| ; Stringfilter[] = flt split( | ); for(int i= ;i<filter length ; i++) content replace(filter[i] ); return content; 不安全字符屏蔽
cha138/Article/program/Java/gj/201311/27382相关参考
SQL注入攻击的原理及其防范措施 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASP编程门槛很
ASP.NET中如何防范SQL注入式攻击 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一什么是
ASP.NET程序防范SQL注入式攻击的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 要防
知识大全 ASP.NET程序防范SQL注入式攻击的方法[1]
ASP.NET程序防范SQL注入式攻击的方法[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 ASP.NET程序防范SQL注入式攻击的方法[2]
ASP.NET程序防范SQL注入式攻击的方法[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
SQL注入防御:用三种策略应对SQL注入攻击[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
SQL注入防御:用三种策略应对SQL注入攻击[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
利用instr()函数防止SQL注入攻击[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb
利用instr()函数防止SQL注入攻击[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb
数据库活动监控系列之SQL注入攻击 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!如果你每天访问的网