JSP网站如何防范SQL注入攻击

2013-1-24 18:06:28 来源:本站原创,请勿转载 浏览:511
SQL注入是目前很流行的一种攻击方式,可以达到多方面的破坏,对于JSP网站,如果疏忽,一样存在该问题。该如何防御呢?

  SQL注入是目前很流行的一种攻击方式,可以达到多方面的破坏,对于JSP网站,如果疏忽,一样存在该问题:

        1、获取网站管理员密码,然后进行登陆后台破坏的目的;

        2、也可以获取整个数据库中的数据,造成数据泄漏;

        3、也可以删除修改数据库数据,造成严重后果;

        4、注入危险数据,发送命令,挂马,提权,入侵整个服务器等。。

 

    虽然护卫神提供了比较完善的防护SQL注入的措施,但是对于非IIS平台的用户,目前就无法享受护卫神提供的便利了,比如Apache-Tomcat服务器,运行的JSP等网页。

 

    和ASP等防范注入的方法类似,以下对JSP网站如何防范SQL注入攻击,做一下简单的说明。

 

  1、SQL注入攻击的总体思路:

      1、发现可以进行SQL注入的点,一般是带参数的动态网页,如:http://www.aabbcc.com/aa.jsp?pid=12345

        2、找到注入点后,直接在浏览器输入测试数据,判断是否具有该漏洞;

        3、如果存在漏洞,则继续注入判断数据库类型等信息;

        3、接下来,采用工具进行注入,方便快捷,如:阿D注入工具。

 

    关于注入攻击的方法,网上已经有很多资料,笔者在此不再重复,入侵者也可以用第三方工具进行注入,这是非常容易的,并且功能很强大。

 

    以下重点讲解JSP网页的SQL注入防范措施:

        1、凡涉及到执行的SQL中有变量时,用JDBC(或者其他数据持久层)提供的如:PreparedStatement 代替 Statement 就可以,切记不要用拼接字符串的方法就可以了;

        2、组织一个文件,在每个需要链接数据库的页面调用,专门获取通过GET/POST/COOKIES传递过来的数据,一般采用正则表达式或自己定义的过滤规则。

        3、其他方法有很多,不外乎对接收到的字符串过滤,同2。

 

    定义过滤规则:

        1、写一个通用文件,如 sql_inj.jsp;

        2、在这个jsp文件中,获取Get/Post/Cookies 传递过来的数据,将这些数据,交给过滤关键词的函数处理;

        3、编写这个过滤关键词的函数,如果碰到SQL敏感词,如 |and|exec|insert|select|delete|update|count|*|%|'|chr|mid|master|truncate|char|declare|;|or|-|  等等,如果含有,则返回错误,提示错误信息,程序禁止往下执行;

        4、这种方式可能会造成一定副作用,比如某些网站确实传递了危险字符,或者用户提交的数据中含有这些字符,则会被拦截,这是不友好的;

        5、这种方式操作简单有效,至于规则,用户可以自行定义,一般可以设置一些白名单、词语组合、IP黑名单之类就能解决问题。

 

    如果您的是IIS服务器,那么可以用护卫神入侵防护系统解决这些被入侵的问题,包括SQL注入;如果不是,可以让您的技术编写过滤规则,保护您的网站不被SQL注入,保障数据安全。

(0)
(0)