CSRF攻击及防御:
CSRF 中文名称:跨站请求伪造,攻击者盗用客户的身份,以客户名义发送恶意请求。
产生原因:如图
当用户访问一个安全的网站A,A返回给客户端一个正确的cookie,但是用户在没
有登出A的网站情况下登录B危险网站,B要求访问第三方站点,这时候会通过用户
向安全的网站那A发出一个不合理的危害请求,这时候由于请求带着cookie A不
知道这是危险网站发出的,以为是用户正常发出的,导致危害。
防御方法:
①:利用攻击者不能获得第三方的Cookie(理论上),在页面增加加密的cookie值,以及Hash值,当发送请求的时候服务器对加密的cookie进行验证,并验证hash以便确认是真正客户。
②: 每次的用户提交都需要用户在表单中填写一个验证码,这样可以有效的防止其他网站恶意攻击。
XSS攻击及防御:
XSS全称跨站脚本攻击,就是通过向网站写入js脚本来实现攻击。攻击者在Web页面里插入恶意html代码,当用户浏览该网页时,嵌入其中代码会被执行,从而达到攻击用户的目的。
XSS分两种类型:
① 非持久性攻击:
在URL的后面拼接 <script>恶意代码</script>那么用户打开此链接,就会直接执行js,这种攻击都是一次性的,诱使别人点击,从而通过执行脚本,获取对方的cookie。你得到对方的cookie后,就可以为所欲为了。
② 持久性攻击:
这种攻击就不是在url上下手了,而是直接把注入代码写到网站数据库中。有些网站呢,是内容生成网站,比如很多的博客站,此时,如果不对用户输出的内容加以过滤,就可以注入一些js脚本内容。这样,别人看到这篇博客时,已经在执行他写的js脚本了。(新浪种过大招。。)
解决方案:
①:前端后端在显示数据和存储数据的时候,对标签进行转义过滤,比如将<script>的两边括号就行转化<>等。
②:后端接收请求时,验证请求是否含有攻击请求,并对攻击请求进行截取屏蔽。
其实现在大多成熟的web框架,还有浏览器如Chrome,自带了XSS过滤器(CSP)。CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。