ToolkitX
知识库工具箱

Web 安全基础

XSS、CSRF、SQL注入、安全头

25min·进阶

01. XSS——往你网页里塞广告

XSS 就是攻击者往你的网页里「塞」一段恶意脚本,别的用户打开时就中招了。就像有人在留言板上贴诈骗广告,其他人都能看到。 三种类型: 反射型——恶意脚本藏在 URL 参数里,服务器没过滤就输出到页面 存储型——恶意脚本存进了数据库,每个访问用户都中招 DOM 型——纯前端问题,JS 把用户输入直接插到页面里 防 XSS 核心就一条:永远别相信用户输入,输出到页面时必须转义。
javascript
// 千万别这样!
element.innerHTML = userInput;  // 极度危险

// 安全做法
element.textContent = userInput;  // 不会执行 HTML

// 自己转义
function escapeHtml(unsafe) {
return unsafe
    .replace(/&/g, "&")
    .replace(/</g, "&lt;")
    .replace(/>/g, "&gt;")
    .replace(/"/g, "&quot;");
}
React、Vue 默认会转义输出,但用了 dangerouslySetInnerHTML 或 v-html 时要特别留神。

02. CSRF——借你的手干坏事

CSRF 就是攻击者诱骗你在不知情时发出了你本不想发的请求。你登录了银行然后点了个恶意链接——那个链接在背后偷偷往银行发转账请求,因为浏览器还带着你银行的登录 Cookie。 防御措施: CSRF Token——服务器每次给一个随机 Token,提交时必须带上,攻击者猜不到 SameSite Cookie——给 Cookie 标上 SameSite=Strict/Lax,禁止跨站携带 验证 Referer/Origin——看请求是不是从你自己的网站发起的
javascript
// Express 中 CSRF Token
const csrf = require('csurf');
app.use(csrf({ cookie: true }));
app.get('/form', (req, res) => {
res.render('send', { csrfToken: req.csrfToken() });
});

// SameSite Cookie
res.cookie('session', token, {
httpOnly: true, secure: true, sameSite: 'strict'
});

03. SQL 注入——最经典的漏洞

SQL 注入就是把用户输入直接拼进 SQL 语句造成的漏洞。比如: "SELECT * FROM users WHERE name = '" + userInput + "'" 如果有人输入 ' OR '1'='1,SQL 就变成: "SELECT * FROM users WHERE name = '' OR '1'='1'" 结果——所有用户数据全被拖出来。 防御极简单:永远用参数化查询(Prepared Statements),不要拼字符串。所有主流数据库驱动和 ORM 都内置这个能力。

04. CORS 跨域——浏览器的门禁

浏览器的同源策略禁止一个网站随意访问另一个网站的数据——这是在保护你。但前后端分离时(API 在 api.example.com,页面在 www.example.com),需要跨域。 CORS 就是服务端告诉浏览器:「我允许这些域名来访问」。通过 Access-Control-Allow-Origin 等响应头控制。 注意:CORS 只是浏览器限制,curl 或 Postman 发请求不受此限制。

知识测验

1/6正确 0

XSS 攻击的本质是什么?

下一节

网络诊断工具

下一节