标签

Web安全

Web 安全指的是保护网站和在线服务免受攻击,以保障用户数据的安全性、完整性以及服务的可用性。随着互联网技术的普及和网络攻击手段的不断发展,Web 安全成为了网站管理员、开发者和业务持有者的一个重要考虑因素。它涉及各种安全措施,用以防范各种网络威胁和漏洞。

Web安全
前端2026年5月27日 01:05
什么是 CSRF 攻击?如何防御?CSRF(跨站请求伪造)的攻击逻辑很简单:**利用用户在其他网站已登录的身份,伪造请求执行非授权操作。** 典型场景:你登录了银行网站,cookie 还在。这时你打开了攻击者的网页,里面有一张隐藏的图片 `<img src="https://bank.com/transfer?to=attacker&amount=10000">`。浏览器加载这张"图片"时,自动带上了你的银行 cookie,银行收到请求以为是你的操作,转账就发生了。 关键在于:浏览器发跨站请求会自动带上目标域名的 cookie——这是浏览器的默认行为。 防御方式: - **Anti-CSRF Token**:服务端生成随机 token,表单提交时带上,服务端验证。攻击者无法获取这个 token - **SameSite Cookie**:`Set-Cookie: SameSite=Strict`,告诉浏览器跨站请求不要带这个 cookie。这是现代浏览器的标配方案 - **Referer/Origin 检查**:服务端验证请求来源,合法的请求才处理 - **二次验证**:关键操作(转账、改密码)要求重新输入密码或验证码 ## 追问 ### CSRF 和 XSS 有什么区别? XSS 是在用户浏览器里执行恶意 JS(利用了网站对输入的信任),CSRF 是伪造用户的请求(利用了网站对浏览器身份的信任)。一句话:XSS 是"偷你的权限",CSRF 是"借用你的身份"。 ### SameSite 三个值分别什么意思? - `Strict`:任何跨站请求都不带 cookie,最安全。但用户从外部链接点进来是未登录状态 - `Lax`:大部分跨站请求不带 cookie,但"安全"的 GET 请求(如 `<a>` 链接点击)会带。兼顾安全和体验 - `None`:和以前一样,跨站请求都带 cookie,但必须同时设置 `Secure`(仅 HTTPS) ### Anti-CSRF Token 怎么防止攻击者自己获取一个 token? token 绑定到用户 session,攻击者拿到的 token 是绑给他自己的 session 的,放到跨站请求里服务端一对不上就拒了。关键不是"token 不能被获取",而是"token 和用户 session 绑定"。
前端2026年5月27日 01:03
什么是 XSS 攻击?XSS(跨站脚本攻击)的本质是**攻击者把自己的 JS 代码注入到你的网页里,在真实用户的浏览器上执行**。能做的坏事包括:偷 cookie、篡改页面内容、劫持用户操作。 三种类型: - **存储型**:恶意脚本存到了服务器(数据库、评论、留言),用户访问页面时被返回执行。危害最大,不需要诱导点击。 - **反射型**:恶意脚本放在 URL 参数里,服务器直接拼到响应页面中。需要诱导用户点击构造好的链接。 - **DOM 型**:纯客户端问题——前端 JS 把 URL 参数或用户输入直接用 `innerHTML` 插到 DOM 里,没有经过后端。 防御三件套: 1. **输出转义**:所有用户输入在输出到 HTML 前做转义(`<` → `&lt;` 等),不信任任何用户数据 2. **CSP(内容安全策略)**:HTTP 头告诉浏览器只允许执行特定来源的脚本 3. **HttpOnly Cookie**:关键 cookie 标记 HttpOnly,JS 读不到,即使被 XSS 也偷不走 ## 追问 ### XSS 和 CSRF 有什么区别? XSS 是在受害者浏览器里执行恶意 JS,利用的是**对网站的信任**。CSRF 是诱导受害者发请求到已登录的网站,利用的是**网站对浏览器的信任**。 ### CSP 怎么配置? `Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-xxx'`。核心思想:白名单机制,不在白名单里的脚本一律不执行。但 CSP 配置需要充分测试,容易把正常功能挡掉。 ### 富文本编辑器怎么防 XSS? 不能用简单的转义(会把格式也干掉)。正确做法:白名单过滤标签和属性(如 DOMPurify),只允许 `<b>`、`<i>`、`<a>` 等安全的标签,移除 `onclick`、`onerror` 等事件处理器和 `javascript:` 协议。
前端2024年6月24日 16:43
Web前端安全攻击手段有哪些?以及应该如何做相应的防御措施?Web前端安全攻击主要有以下几种常见的方式: 1. **XSS攻击(跨站脚本攻击)**:攻击者通过在目标网站上注入恶意的HTML代码,当用户浏览该网站时就会运行这些恶意代码。 **防御措施**:输入验证与过滤、输出编码、使用CSP(内容安全策略)防止不安全的动态脚本执行。 2. **CSRF攻击(跨站请求伪造)**:攻击者诱导用户点击链接,使用用户的登录凭证发送恶意请求。 **防御措施**:使用CSRF token,验证每个请求。 3. **点击劫持**:攻击者将透明的恶意网站覆盖在真实网站上,诱导用户在不知情的情况下进行恶意操作。 **防御措施**:使用X-FRAME-OPTIONS来防止网页被iframe调用。 4. **DoS攻击(拒绝服务攻击)**:恶意请求过多使得服务无法处理正常的请求。 **防御措施**:限制访问频率、使用CDN(内容分发网络)等方式分散流量。 5. **SQL注入攻击**:攻击者通过输入特殊的SQL查询语句,来获取数据库的敏感信息。 **防御措施**:使用预处理语句(Prepared Statements)或参数化的SQL命令,拒绝直接执行动态生成的SQL语句。 6. **上传恶意文件**:攻击者通过上传恶意文件,例如包含病毒或者后门的文件,来破坏服务器或者网页。 **防御措施**:限制可上传文件类型,扫描上传的文件以防止上传恶意软件,对上传文件名严格过滤等。