1 文件上传防御
1 文件上传目录设置为不可执行
只要Web容器无法解析该目录下的文件,即使攻击者上传了脚本文件,服务器本身也不会收到影响。很多大型网站的上传应用,文件上传后会放到独立的存储上,做静态文件处理,一方面使用缓存加速,降低性能损耗;另一方面也杜绝了脚本执行的可能。
2 判断文件类型
判断文件类型时,结合使用MIME Type,后缀检查等方式。在文件类型检查中,强烈推荐使用白名单,而不是黑名单的方式。
此外对于图片的处理,使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。
3 单独设置文件服务器的域名
由于服务器同源策略的关系,一系列客户端攻击将失效,比如上传
crossdomain.xml,上传包含JavaScript的XSS利用等问题将得到解决。能否如此设置,需要看具体的业务环境。
除此之外,文件上传功能,还要考虑到病毒,木马,色情图片和视频,反动政治文件等与具体业务安全结合更紧密的问题,则需要做的工作就更多了。不断的发现问题,结合业务需求,才能设计出合理的,最安全的上传功能。
2 SQL注入的防御
解决思路:
- 找到所有的SQL注入漏洞
- 修补这些漏洞
1 使用预编语句
防御SQL注入的最佳方式,就是使用预编译语句,绑定变量。