XSS和CSRF

来源:互联网 发布:js屏幕图片自动旋转 编辑:程序博客网 时间:2024/05/17 20:25

XSS

(cross site scrip)是攻击者往web页面中插入恶意的HTML或者js片段

反射型:

URL的查询字段添加类似于str=xss的字符,将其在服务器端解析成JSON数据后{str:'xss'}后添加到页面,那么可用script标签,link标签,style标签或者iframe标签替换前面的xss字符,这样页面就可能会被无意中篡改:

  • script标签执行一段而已脚本,或者获取用户的cookie信息发送给攻击者,
  • style或者link标签可将页面内容显示为display:none
  • iframe标签可插入其他页面,如广告植入

存储型

即将恶意脚本存在服务器端后。例如最常用的是将用户的评论信息存储在服务器端重新获取显示在页面。

  • 在论坛中发一个<script>while(true){}</script>循环,执行一段恶意代码
  • 在论坛中发一个不安全的链接,欺骗用户点击后获取用户的cookie信息
  • 在论坛中加一个恶意表单,用户提交表单的时候却把信息传递到攻击者的服务器
  • 在论坛中加一个隐藏的恶意表单,添加hover事件触发CSRF攻击。
  • 在论坛中加一<img src="" onerror="alert(123)">执行恶意脚本

解决方法

  • 避免在cookie中泄漏隐私,通过将cookie和IP绑定验证用户,设置cookie是添加httpOnly属性,这样js脚本将无法获取cookie
  • 对用户的输入进行以下操作:
    • 编码,即转义,例如 ""对应&quot&对应&amp,<对应&lt,>对应&mt,空格对应&nbsp
    • 客户端反转义
    • 过滤,如将img标签中的onerror过滤掉,还可以过来过滤script,style,link,iframe标签。

CSRF

伪造用户请求,冒充用户

完成1次CSRF攻击必须完成以下两个步骤:

  1. 用户登录网站A,并在本地生成Cookie
  2. 在不退出网站A的情况下,访问危险网站B。

解决方法

  • 请求令牌:服务器以某种策略生成随机字符串作为令牌,保存在session或localStorage中,用户请求页面时需将令牌和其他信息一起发送,若和服务器短的领令牌不一致则需要重新验证身份。
  • 强制用户输入验证码
原创粉丝点击