CSRF攻击攻击原理及过程以下:
1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登陆网站A;
2.在用户信息经过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登陆网站A成功,能够正常发送请求到网站A;
3. 用户未退出网站A以前,在同一浏览器中,打开一个TAB页访问网站B;
4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的状况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求实际上是由B发起的,因此会根据用户C的Cookie信息以C的权限处理该请求,致使来自网站B的恶意代码被执行。
防护CSRF攻击:
(1)验证 HTTP Referer 字段
(2)在请求地址中添加 token 并验证
(3)在 HTTP 头中自定义属性并验证javascript
扩展: html
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造造成由服务端发起请求的一个安全漏洞。通常状况下,SSRF攻击的目标是从外网没法访问的内部系统。(正是由于它是由服务端发起的,因此它可以请求到与它相连而与外网隔离的内部系统)java
SSRF 造成的缘由大都是因为服务端提供了从其余服务器应用获取数据的功能且没有对目标地址作过滤与限制。好比从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。浏览器
XSS原理:
Xss(cross-site scripting)攻击指的是攻击者往Web页面里插入恶意html标签或者javascript代码,XSS是实现CSRF的诸多手段中的一种。好比:攻击者在论坛中放一个看似安全的连接,骗取用户点击后,窃取cookie中的用户私密信息;或者攻击者在论坛中加一个恶意表单,当用户提交表单的时候,却把信息传送到攻击者的服务器中,而不是用户本来觉得的信任站点。
XSS防范方法:
1.代码里对用户输入的地方和变量都须要仔细检查长度和对”<”,”>”,”;”,”’”等字符作过滤;其次任何内容写到页面以前都必须加以encode,避免不当心把html tag 弄出来。这一个层面作好,至少能够堵住超过一半的XSS 攻击。
2.避免直接在cookie 中泄露用户隐私,例如email、密码等等。
3.经过使cookie 和系统ip 绑定来下降cookie 泄露后的危险。这样攻击者获得的cookie 没有实际价值,不可能拿来重放。
4.尽可能采用POST 而非GET 提交表单。
XSS与CSRF的区别:
XSS是获取信息,不须要提早知道其余用户页面的代码和数据包。CSRF是代替用户完成指定的动做,须要知道其余用户页面的代码和数据包。
要完成一次CSRF攻击,受害者必须依次完成两个步骤:
1.登陆受信任网站A,并在本地生成Cookie; 安全
2.在不登出A的状况下,访问危险网站B。服务器