一、SQL注入防范
项目使用PreparedStatement方法完成SQL语句的执行,该方法要求在执行SQL语句之前,必须告诉JDBC哪些值作为输入参数,解决了普通Statement方法的注入问题,极大的提高了SQL语句执行的安全性。
没有做SQL注入防范的网站,我们可以在用户登录中输入一些特殊字符,例如 ‘ 进入页面保护界面,看到采用的SQL语句,再进行构造永真语句达到登录绕过的效果。(万能密码:admin' or 1=1 --')
可以看到,图片中的语句采用拼接,这种就可以采用构造永真语句来达到登录绕过,安全性低。防范:我们可以将拼接法改为录入参数的方法达到防范SQL注入的效果。
二、跨站攻击防范
在HTML中,某些字符是预留的。例如小于号 < 和大于号 > ,浏览器在解析他们时会误认为它们是标签。如果希望正确地显示预留字符,我们必须在HTML源代码中使用字符实体(character entities)。
常见字符的实体转换表 | |||
显示结果 | 描述 | 实体名称 | 实体编号 |
| 空格 | |   |
< | 小于号 | < | < |
> | 大于号 | > | > |
& | 和号 | & | & |
" | 引号 | " | " |
' | 撇号 | ' (IE不支持) | ' |
如果没有做实体转换,那么在一些可以提交留言的地方上传代码,网站就会执行该代码,达到将该页面转换为其他页面的效果。我们试着提交一个简单的代码<script>alert("XXX")</script>,可以看到该语句生效
防范:将字符转换为字符实体 ,以 小于号< 和大于号> 为例:
转换完之后,我们再提交“XXX”看看会不会生效:
可以看到网站并没有执行该语句,而是留在了留言板上,达到了跨站攻击防范的效果。
三、上传攻击防范
中国菜刀这个工具大家应该并不陌生,它可以通过向网站传送木马然后获取数据,我们以该博客网站为例,找到可以上传文件的地方,发现只有图片可以上传,那么我们来上传一个.jsp文件的木马
发现可以上传成功。那么我们再利用菜刀工具,就可以获取该系统的数据
可见未做上传防范的危害性很大。防范:图片上传只允许上传图片格式的文件,例如.jpg .png .gif,由于木马文件格式非图片格式,即使做了伪装也无法获取到数据。