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

来源:互联网 发布:appletv4怎么安装软件 编辑:程序博客网 时间:2024/06/05 01:18

转载于:http://jingyan.baidu.com/article/5225f26b187d62e6fa0908f3.html


SQL注入是目前很流行的一种攻击方式,可以达到多方面的破坏,对于JSP网站,如果疏忽,一样存在该问题:
(1) 获取网站管理员密码,然后进行登陆后台破坏的目的;
(2) 也可以获取整个数据库中的数据,造成数据泄漏;
(3) 也可以删除修改数据库数据,造成严重后果;
(4) 注入危险数据,发送命令,挂马,提权,入侵整个服务器等。


SQL注入攻击的总体思路:
 
 (1) 发现可以进行SQL注入的点,一般是带参数的动态网页,如:http://www.aabbcc.com/aa.jsp?pid=12345
 (2) 找到注入点后,直接在浏览器输入测试数据,判断是否具有该漏洞。
 (3) 如果存在漏洞,则继续注入判断数据库类型等信息。
 (4) 接下来,采用工具进行注入,方便快捷,如:阿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黑名单之类就能解决问题。
 

原创粉丝点击