Web之防XSS(跨站脚本攻击)

Web之防XSS(跨站脚本攻击)

一、概念

XSS (跨站脚本攻击) 是最常见的 Web 攻击之一。它的原理是:

攻击者把恶意的 JavaScript 脚本注入到页面中,让浏览器在用户端执行,从而窃取 cookie、伪造操作、劫持会话等。

例子:

比如你的页面有个输入框,用户输入内容后直接显示在页面上:

<p>用户留言:{{ message }}</p>

如果用户输入:

<script>alert('你被黑了')</script>

那么页面会变成:

<p>用户留言:<script>alert('你被黑了')</script></p>

浏览器就会执行恶意脚本,造成 XSS 攻击。

二、防御方法

1、输出转义(Output Encoding

所谓 输出转义 ,就是在 页面渲染时,把用户输入中的特殊符号(< > " ' & 等)转成安全的 HTML 实体。

  • < 转义成 &lt;
  • > 转义成 &gt;
  • " 转义成 &quot;
  • ' 转义成 &#x27;
  • & 转义成 &amp;

这样用户输入的脚本就不会被执行,而是当普通文本显示。

当输入<script>alert('你被黑了')</script>

那么会有<p>用户留言:&lt;script&gt;alert('你被黑了')&lt;/script&gt;</p>

而不会执行脚本。

​​​​​​​2、在常见框架里的实现

<p>{{ message }}</p> <!-- 自动转义,安全 -->

<p v-html="message"></p> <!-- 不转义,有风险 -->

所以输出转义 = 在渲染到页面前,把危险字符转成 HTML 实体,避免脚本被执行。

它是防御 XSS 的最重要手段之一。

相关推荐
五仁火烧7 分钟前
Vue3 项目的默认端口行为
服务器·vue.js·nginx·容器·vue
C Yu小白38 分钟前
Linux系统调用与文件操作详解
linux·运维·服务器
ZFB00011 小时前
【麒麟桌面系统】V10-SP1 2503 系统知识——常见用户组简介
linux·运维·kylin
acrelgxy1 小时前
告别被动抢修与盲目巡检!安科瑞运维云平台,让电力系统实现预测性守护。
运维·电力监控系统·智能电力仪表
EndingCoder1 小时前
类的继承和多态
linux·运维·前端·javascript·ubuntu·typescript
Anyexyz1 小时前
【更新】境内 Docker 镜像状态监控——配置生成,一键复制!
运维·docker·容器
信创天地2 小时前
深耕金融政务核心场景:国产化数据库迁移的全流程架构设计与风险管控
运维·网络安全·系统架构·系统安全·运维开发
ZFB00012 小时前
【麒麟桌面系统】V10-SP1 2503 系统知识——添加用户
linux·运维·kylin
释怀不想释怀2 小时前
Docker(网络)
运维·docker·容器
ZFB00012 小时前
【麒麟桌面系统】V10-SP1 2503 系统知识——进入救援模式
linux·运维·kylin