CSRF攻击原理及过程如下:
- 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
-
用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
-
网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
-
浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
6. 解决
- 签名与时间戳防护处理
- token由三部分组成:
a). 消息[msg]:而msg本身也有两部分组成:一部分:随机字符串,过期时间戳。
b). 分割符[separator]:用于分隔msg部分与加密后生成的signature签名部分,这里用的是”.“
c). 签名[signature]:signature。signature签名,是对“msg消息”用特定算法进行加密后的串。
token = base64(msg)格式化…base64(sha256(“密锁”, msg))
xss攻击
实施XSS攻击须要具有两个条件:css
1、须要向web页面注入恶意代码;html
2、这些恶意代码可以被浏览器成功的执行。
在浏览器search获取参数,如果输入的是JS,可以被执行。
我们假设某个用户的这个网页中的localstorage中保存着用户token。再假设这时候访问:domain.com/index.php?input=。
这正是将 授权登陆的token发送给了攻击者的服务器,攻击者拿到token就等于拿到了登陆态,攻击者正是通过发送此类似链接,诱导用户点击进行攻击。因此不要点击陌生链接。
解决:
1、不要相信用户输入,过滤所有的HTTP Request参数。
2、用户输入长度限制。
3、http-only,禁止js读取某些cookie。
4、避免拼接html。
5、避免内联事件。如点
6、主动检测和发现
1、是在表单提交或者url参数传递前,对须要的参数进行过滤,请看以下XSS过滤工具类代码
2、 过滤用户输入的 检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等。、严格控制输出
原文链接:
csrf: https://blog.csdn.net/weixin_39922749/article/details/111207965
xss:
https://www.jianshu.com/p/3d66d5f4e1c1
http://www.javashuo.com/article/p-kvtsyvtc-br.html