关于XSS 攻击的解决办法!
程序员文章站
2022-05-24 13:15:02
...
快到国庆了而且今年又是60周年,各个*网站也都开始对网站的安全、漏洞进行大规模的扫描,很不幸我们公司开发的一个*网站被扫描出来存在SQL注入、XSS、CSRF等漏洞!网站是几年前采用PHP开发的,由于开发人员本身的安全意识不足,代码编写上不严谨,滥用$_REQUEST类变量等导致网站存在了很多的安全隐患。最近一直都在研究XSS攻击如何防范,由于研究的时间不长简单的总结了下防御办法。
如下表单
如果在用户在输入用户时录入的数据为" /><script src=xxx></script>这样就会插入了恶意的脚本
[b]解决办法[/b]:
1、对用户录入的数据进行类型和长度的验证,其它的包括对URL、查询关键字、HTTP头、get、post也需要进行可靠的输入验证,这样可以抵挡部分恶意的脚本,但是不能完全防住。
2、尽量采用POST方式而非GET方式提交表单;对”<”,”>”,”;”,”’”等字符做过滤;任何内容输出到页面之前都必须加以encode。对于Cookie 尽量避免直接泄露用户隐私,可以用cookie结合其它一些系统或用户信息来降低泄露后的危险。
3、这里要注意一下如果注入代码如<img src="javascript:alert('XSS')">这种需要把关键字去除如 src href 这些连接性的 发现没有带协议头的就需要帮助补充。而style 则需要重点处理 /**/ expression url,尽可能禁止style属性,将所有的样式都定义到CSS中。
4、尽量减少在客户端进行写document等敏感操作,重点关注以下方法
document.URL
document.URLUnencoded
document.location ()
document.referrer
window.location ()
document.create...()等
逐层进行过滤客户端、服务器端、数据库访问层,每一层都进行下数据的过滤尽量将危险控制在最低。
以上是对XSS攻击的一个简单总结,希望大家能够再多多补充。附一张扫描结果!
如下表单
<form name="testform" method="post" action="news/comment.php">
<input type="text" name="userName">
<input type="hidden" name="test1" />
<input type="hidden" name="test2" />
</form>
如果在用户在输入用户时录入的数据为" /><script src=xxx></script>这样就会插入了恶意的脚本
[b]解决办法[/b]:
1、对用户录入的数据进行类型和长度的验证,其它的包括对URL、查询关键字、HTTP头、get、post也需要进行可靠的输入验证,这样可以抵挡部分恶意的脚本,但是不能完全防住。
2、尽量采用POST方式而非GET方式提交表单;对”<”,”>”,”;”,”’”等字符做过滤;任何内容输出到页面之前都必须加以encode。对于Cookie 尽量避免直接泄露用户隐私,可以用cookie结合其它一些系统或用户信息来降低泄露后的危险。
3、这里要注意一下如果注入代码如<img src="javascript:alert('XSS')">这种需要把关键字去除如 src href 这些连接性的 发现没有带协议头的就需要帮助补充。而style 则需要重点处理 /**/ expression url,尽可能禁止style属性,将所有的样式都定义到CSS中。
4、尽量减少在客户端进行写document等敏感操作,重点关注以下方法
document.URL
document.URLUnencoded
document.location ()
document.referrer
window.location ()
document.create...()等
逐层进行过滤客户端、服务器端、数据库访问层,每一层都进行下数据的过滤尽量将危险控制在最低。
以上是对XSS攻击的一个简单总结,希望大家能够再多多补充。附一张扫描结果!
上一篇: 冲突的解决办法
下一篇: 教育培训机构如何通过网络营销开展招商?
推荐阅读
-
网站存在xss跨站漏洞的解决办法
-
JSP Struts过滤xss攻击的解决办法
-
php下关于Cannot use a scalar value as an array的解决办法
-
关于webpack打包报错Chunk.entrypoints:UseChunks.groupsIterableandfilterbyinstanceofEntrypointinstead的解决办法
-
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
-
关于pycharm中输出的内容不全的解决办法
-
关于PHP中拿到MySQL中数据中的中文在网页上显示为?的解决办法!
-
IOS开发关于SDWebImage无法获取HTTPS站点的图片和解决办法
-
关于连接共享打印机要输入用户名和密码的解决办法
-
关于jQuery库冲突的完美解决办法