知识大全 关于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注入攻击的原理及其防范措施

SQL注入攻击的原理及其防范措施  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASP编程门槛很

知识大全 ASP.NET中如何防范SQL注入式攻击

ASP.NET中如何防范SQL注入式攻击  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一什么是

知识大全 ASP.NET程序防范SQL注入式攻击的方法

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注入攻击[2]

SQL注入防御:用三种策略应对SQL注入攻击[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 用三种策略应对SQL注入攻击[1]

SQL注入防御:用三种策略应对SQL注入攻击[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 利用instr()函数防止SQL注入攻击[2]

利用instr()函数防止SQL注入攻击[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 利用instr()函数防止SQL注入攻击[1]

利用instr()函数防止SQL注入攻击[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 数据库活动监控系列之SQL注入攻击

数据库活动监控系列之SQL注入攻击  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!如果你每天访问的网