XSS攻击——跨站脚本攻击

981 词

XSS攻击——跨站脚本攻击

  • 存储型XSS攻击

将脚本通过评论区或帖子等形式,注入到原网站服务器,当其它用户获取该帖子或者评论时,就会从服务器中拿到该病毒脚本,如果是该脚本是打开攻击者的网站,那攻击者就能拿到用户的登录凭证等信息。

  • 反射型XSS攻击

利用原网站对js的自动处理,比如使用url上的资源路径渲染,或者document.write()执行的一些操作

  • Dom型XSS攻击

黑客通过各种手段将恶意脚本注入用户的页面中,比如通过网络劫持在页面传输过程中修改 HTML 页面的内容,这种劫持类型很多,有通过 WiFi 路由器劫持的,有通过本地恶意软件来劫持的,它们的共同点是在 Web 资源传输过程或者在用户使用页面的过程中修改 Web 页面的数据

解决方法:

  • 对代码进行过滤、转义
  • cookie使用 httpOnly 禁止js获取cookie
  • 使用CSP设置请求头或者meta标签

CSRF攻击——跨站请求伪造

CSRF 英文全称是 Cross-site request forgery,所以又称为“跨站请求伪造”,是指黑客引诱用户打开黑客的网站,在黑客的网站中,利用用户的登录状态发起的跨站请求。

当黑客拿到用户的登录状态后可能进行的三种攻击方式

  • 自动提交get请求,通过图片等资源路径在网页加载时的自动请求
  • 自动提交post请求,创建一个隐藏的form表单,在用户打开后自动提交
  • 引诱用户点击链接,通过a标签或者js操作,引诱用户主动发起请求

解决方案:

  1. 使用cookie的 samesite 属性,禁止第三方站点携带cookie

    • strict 完全禁止第三方cookie

    • Lax post、img或者iframe等标签加载的url都不会携带cookie,打开链接和get请求的表单都会携带cookie

    • none 任何方式都不会携带cookie

  2. 验证请求的 来源站点

    • 通过Origin字段,只记录了域名,不包括资源路径,优先级大于referer
    • 通过referer字段
  3. CSRF Token

    • 在浏览器向服务器发起请求时,服务器生成一个 CSRF Token。CSRF Token 其实就是服务器生成的字符串,然后将该字符串植入到返回的页面中。
    • 需要带上页面中的 CSRF Token,然后服务器会验证该 Token 是否合法。如果是从第三方站点发出的请求,那么将无法获取到 CSRF Token 的值,所以即使发出了请求,服务器也会因为 CSRF Token 不正确而拒绝请求。
留言