Web安全防御(上)

1 文件上传防御

1 文件上传目录设置为不可执行

只要Web容器无法解析该目录下的文件,即使攻击者上传了脚本文件,服务器本身也不会收到影响。很多大型网站的上传应用,文件上传后会放到独立的存储上,做静态文件处理,一方面使用缓存加速,降低性能损耗;另一方面也杜绝了脚本执行的可能。

2 判断文件类型

判断文件类型时,结合使用MIME Type,后缀检查等方式。在文件类型检查中,强烈推荐使用白名单,而不是黑名单的方式。

此外对于图片的处理,使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。

3 单独设置文件服务器的域名

由于服务器同源策略的关系,一系列客户端攻击将失效,比如上传
crossdomain.xml,上传包含JavaScript的XSS利用等问题将得到解决。能否如此设置,需要看具体的业务环境。

除此之外,文件上传功能,还要考虑到病毒,木马,色情图片和视频,反动政治文件等与具体业务安全结合更紧密的问题,则需要做的工作就更多了。不断的发现问题,结合业务需求,才能设计出合理的,最安全的上传功能。

2 SQL注入的防御

解决思路:
- 找到所有的SQL注入漏洞
- 修补这些漏洞

1 使用预编语句

防御SQL注入的最佳方式,就是使用预编译语句,绑定变量。
Web安全防御(上)_第1张图片

2 使用存储过程

效果与预编语句类似,区别在于存储过程需要先将SQL语句定义在数据库中。也肯呢个存在注入问题,避免在存储过程中,使用动态的SQL语句。
Web安全防御(上)_第2张图片

3 检查数据类型

Web安全防御(上)_第3张图片

4 使用安全函数

各种Web语言都实现了一些编码函数,可以帮助对抗SQL注入。

Web安全防御(上)_第4张图片

5 其他

数据库自身角度来说,应该使用最小权限原则,避免Web应用直接使用root,dbowner等高权限账户直接链接数据库。为每个应用单独分配不同的账户。Web应用使用的数据库账户,不应该有创建自定义函数,操作本地文件的权限。

你可能感兴趣的:(web,安全,java,web)