跨站脚本攻击(XSS,Cross-site scripting)是最常见和基本的攻击Web网站的方法。攻击者可以在网页上发布包含攻击性代码的数据,当浏览者看到此网页时,特定的脚本就会以浏览者用户的身份和权限来执行。通过XSS可以比较容易地修改用户数据、窃取用户信息以及造成其它类型的攻击,例如:CSRF攻击。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。 跨站脚本攻击的解决思路 预防XSS攻击的基本方法是:确保任何被输出到HTML页面中的数据以HTML的方式进行转义(HTML escape)。例如PHP输出: <textarea><?php echo $articleText; ?></textarea> 如果这个articleText是由用户自行输入的,那么攻击者很有可能输入一段包含javascript恶意攻击代码的文本,使得最终输出变成: <textarea> </textarea><script>alert('hello')'</script> </textarea> 上述代码,在浏览器中渲染,将会执行JavaScript代码并在屏幕上alert hello。当然这个代码是无害的,但攻击者完全可以创建一个JavaScript来修改用户资料或者窃取cookie数据。解决方法很简单,就是将输出的值的值进行html escape,转义后的输出代码如下 <textarea> </textarea><script>alert("hello!")</script> </textarea> 这样就不会有任何危害了。 XSS危害 XSS其实是一门小众但是热门的攻击技术,之所以小众,是由于费时间、很难成功、攻击无法自动化和需要扎实的htmljs功底,但是由于漏洞存在广泛,即使是大型互联网公司的站点也很容易由于疏忽存在此漏洞,这就是最大的热门。 跨站请求伪造攻击(CSRF) 跨站请求伪造(CSRF,Cross-site request forgery)是另一种常见的攻击。攻击者通过各种方法伪造一个请求,模仿用户提交表单的行为,从而达到修改用户的数据或执行特定任务的目的。 解决思路 1、增加攻击的难度。GET请求是很容易创建的,用户点击一个链接就可以发起GET类型的请求,而POST请求相对比较难,攻击者往往需要借助JavaScript才能实现;因此,确保form表单或者服务端接口只接受POST类型的提交请求,可以增加系统的安全性。 2、对请求进行认证,确保该请求确实是用户本人填写表单或者发起请求并提交的,而不是第三者伪造的。 1)、用户点击链接(1) -> 网站显示表单(2) -> 用户填写信息并提交(3) -> 网站接受用户的数据并保存(4) 2)、直接跳到第2步(1) -> 伪造要修改的信息并提交(2) -> 网站接受攻击者修改参数数据并保存(3) 3)、用户点击链接(1) -> 网站显示表单,表单中包含特殊的token同时把token保存在session中(2) -> 用户填写信息并提交,同时发回token信息到服务端(3) -> 网站比对用户发回的token和session中的token,应该一致,则接受数据,并保存 这样,如果攻击者伪造要修改的信息并提交,是没办法直接访问到session的,所以也没办法拿到实际的token值;请求发送到服务端,服务端进行token校验的时候,发现不一致,则直接拒绝此次请求。 |
免责声明:本站部分文章和图片均来自用户投稿和网络收集,旨在传播知识,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系我们及时修正或删除。谢谢!
始终以前瞻性的眼光聚焦站长、创业、互联网等领域,为您提供最新最全的互联网资讯,帮助站长转型升级,为互联网创业者提供更加优质的创业信息和品牌营销服务,与站长一起进步!让互联网创业者不再孤独!
扫一扫,关注站长网微信