网站规划设计是什么样的,服务器可以做几个网站,用别人的公司名字做网站,企业制作网站哪家好跨站请求伪造 (CSRF)
跨站请求伪造#xff08;CSRF#xff0c;Cross-Site Request Forgery#xff09; 是一种网络攻击方式#xff0c;攻击者诱使受害者在未经其授权的情况下执行特定操作。CSRF 利用受害者已登录的身份和浏览器自动发送的认证信息#xff08;如 Cooki…跨站请求伪造 (CSRF)
跨站请求伪造CSRFCross-Site Request Forgery 是一种网络攻击方式攻击者诱使受害者在未经其授权的情况下执行特定操作。CSRF 利用受害者已登录的身份和浏览器自动发送的认证信息如 Cookie来冒充受害者发起未经授权的请求。此攻击通常会导致严重的安全问题特别是在银行、电子商务和社交网络等网站上。 CSRF 攻击的工作原理
银行转账操作案例 用户登录银行网站 用户访问银行网站并登录提交登录凭据后银行生成会话 Cookie 并存储在浏览器中 Cookie: JSESSIONIDrandomid用户在登录后未注销浏览器保存此 Cookie 用于后续的认证。 银行提供的合法转账表单 银行网站的转账表单如下 form methodpost actionhttps://bank.example.com/transferinput typetext nameamount placeholderAmount /input typetext nameroutingNumber placeholderRouting Number /input typetext nameaccount placeholderAccount Number /input typesubmit valueTransfer /
/form用户提交数据后浏览器发送如下请求 POST /transfer HTTP/1.1
Host: bank.example.com
Cookie: JSESSIONIDrandomid
Content-Type: application/x-www-form-urlencodedamount200routingNumber1234account5678攻击者设置陷阱 攻击者创建了一个恶意网站并设计了一段 HTML 代码模拟银行的转账操作 form methodpost actionhttps://bank.example.com/transferinput typehidden nameamount value500 /input typehidden nameroutingNumber valueattackerRouting /input typehidden nameaccount valueattackerAccount /input typesubmit valueClick to Claim Prize /
/form攻击者诱使用户访问该页面用户无意间点击了提交按钮触发请求。 后果 浏览器发送以下请求到银行服务器 POST /transfer HTTP/1.1
Host: bank.example.com
Cookie: JSESSIONIDrandomid
Content-Type: application/x-www-form-urlencodedamount500routingNumberattackerRoutingaccountattackerAccount银行服务器因为依赖 Cookie 自动认证误以为是用户本人发起的合法操作将资金转入攻击者账户。 CSRF 的核心特点
自动发送凭据 浏览器会自动携带与目标网站相关的 Cookie 和其他认证信息。用户无感知 用户通常不会察觉攻击的发生因为它可能嵌入在正常网页或隐藏的代码中。利用受信任身份 服务器将受害者的身份视为合法因此执行攻击者设计的操作。 CSRF 攻击的危害
资金损失攻击者可通过伪造请求进行转账或支付操作。数据篡改攻击者可修改用户数据如更改密码、邮箱等。账户劫持攻击者可利用 CSRF 攻击获取用户权限进一步控制账户。服务滥用攻击者可利用受害者的身份执行恶意操作如发送垃圾邮件或发起 DDoS 攻击。 防范 CSRF 攻击的方法
1. 使用 CSRF Token 在表单或请求中添加一个随机生成的 Token服务器验证该 Token 是否匹配。 示例 form methodpost action/transferinput typehidden namecsrf_token valuerandomly_generated_token /input typetext nameamount /input typesubmit valueTransfer /
/form2. 验证请求来源 检查 Referer 或 Origin 头部确保请求来自合法的源。 示例 Referer: https://bank.example.com
Origin: https://bank.example.com3. 使用 SameSite Cookie 设置 Cookie 的 SameSite 属性为 Strict 或 Lax防止跨站请求携带 Cookie。 示例 Set-Cookie: JSESSIONIDrandomid; SameSiteStrict4. 限制安全方法
确保安全方法如 GET、HEAD、OPTIONS是只读的不用于修改数据。示例 使用 POST 或 PUT 方法执行写操作。避免使用 GET 方法执行敏感操作。
5. 双重认证
对敏感操作如转账、修改密码要求用户进行双重认证例如输入短信验证码。
6. 定期安全测试
使用自动化工具如 OWASP ZAP进行安全测试检查是否存在 CSRF 漏洞。 其他防护建议
避免直接使用 GET 方法进行状态改变避免使用 GET 请求来执行会影响服务器状态的操作例如提交表单、修改数据等。始终使用 POST 方法来进行更改操作。对应用进行安全审计和渗透测试定期进行 CSRF 漏洞检测包括使用自动化工具如 OWASP ZAP进行测试确保应用程序没有 CSRF 漏洞。教育用户虽然大部分防护措施都在技术层面但用户教育也很重要。提醒用户不要随便点击未知网站的链接或填写不明网站的表单。 扩展阅读
OWASP CSRF Prevention Cheat Sheet《Web应用程序安全权威指南》