Closed Jogiter closed 5 years ago
要完成一次CSRF攻击,受害者必须满足两个必要的条件:
(1)登录受信任网站A,并在本地生成Cookie。(如果用户没有登录网站A,那么网站B在诱导的时候,请求网站A的api接口时,会提示你登录) (2)在不登出A的情况下,访问危险网站B(其实是利用了网站A的漏洞)。
CSRF如何防御
方法一、Token 验证:(用的最多) (1)服务器发送给客户端一个token; (2)客户端提交的表单中带着这个token。 (3)如果这个 token 不合法,那么服务器拒绝这个请求。
方法二:隐藏令牌: 把 token 隐藏在 http 的 head头中。
方法三、Referer 验证: Referer 指的是页面请求来源。意思是,只接受本站的请求,服务器才做响应;如果不是,就拦截。
XSS的攻击原理
不需要你做任何的登录认证,它会通过合法的操作(比如在url中输入、在评论框中输入),向你的页面注入脚本(可能是js、hmtl代码块等)。
最后导致的结果可能是:
XSS的防范措施(encode + 过滤)
1、编码: 对用户输入的数据进行 HTML Entity 编码。把字符转换成 转义字符。
HTML Entity
2、过滤: 移除用户输入的和事件相关的属性。如onerror可以自动触发攻击,还有onclick等。 移除用户输入的 Style 节点、Script 节点、Iframe 节点。(尤其是Script节点,它可是支持跨域的呀,一定要移除)。
3、校正 避免直接对 HTML Entity 进行解码。 使用 DOM Parse 转换,校正不配对的 DOM 标签。
CSRF:需要用户先登录网站 A,获取 cookie。
XSS:不需要登录。
CSRF:是利用网站 A 本身的漏洞,去请求网站 A 的 api。
XSS:是向网站 A 注入 JS 代码,然后执行 JS 里的代码,篡改网站 A 的内容。
XSS game
CSRF(Cross-site request forgery):跨站请求伪造。
要完成一次CSRF攻击,受害者必须满足两个必要的条件:
(1)登录受信任网站A,并在本地生成Cookie。(如果用户没有登录网站A,那么网站B在诱导的时候,请求网站A的api接口时,会提示你登录) (2)在不登出A的情况下,访问危险网站B(其实是利用了网站A的漏洞)。
CSRF如何防御
方法一、Token 验证:(用的最多) (1)服务器发送给客户端一个token; (2)客户端提交的表单中带着这个token。 (3)如果这个 token 不合法,那么服务器拒绝这个请求。
方法二:隐藏令牌: 把 token 隐藏在 http 的 head头中。
方法三、Referer 验证: Referer 指的是页面请求来源。意思是,只接受本站的请求,服务器才做响应;如果不是,就拦截。
XSS(Cross Site Scripting):跨域脚本攻击。
XSS的攻击原理
不需要你做任何的登录认证,它会通过合法的操作(比如在url中输入、在评论框中输入),向你的页面注入脚本(可能是js、hmtl代码块等)。
最后导致的结果可能是:
XSS的防范措施(encode + 过滤)
1、编码: 对用户输入的数据进行
HTML Entity
编码。把字符转换成 转义字符。2、过滤: 移除用户输入的和事件相关的属性。如onerror可以自动触发攻击,还有onclick等。 移除用户输入的 Style 节点、Script 节点、Iframe 节点。(尤其是Script节点,它可是支持跨域的呀,一定要移除)。
3、校正 避免直接对 HTML Entity 进行解码。 使用 DOM Parse 转换,校正不配对的 DOM 标签。
CSRF 和 XSS 的区别
CSRF:需要用户先登录网站 A,获取 cookie。
XSS:不需要登录。
CSRF:是利用网站 A 本身的漏洞,去请求网站 A 的 api。
XSS:是向网站 A 注入 JS 代码,然后执行 JS 里的代码,篡改网站 A 的内容。