CSRF 攻击的原理如下:(诱导用户点击非法网页,该网页利用已登入的用户权限,向服务器发送恶意请求操作。)
- 用户登录到一个可信的网站 A,并保持登录状态。
- 攻击者诱导用户访问一个恶意网站 B。
- 恶意网站 B 包含一个向网站 A 发送请求的代码,这个请求会利用用户在网站 A 的登录状态执行未经授权的操作,如转账、修改密码等。
- 由于用户在网站 A 保持登录状态,网站 A 会认为这个请求是用户自己发送的,从而执行该请求。
解决方法
- 使用 CSRF 令牌: 在每个表单中添加一个随机生成的 CSRF 令牌,服务器端验证该令牌是否正确。
- 验证 Referer 头: 检查 HTTP 请求的 Referer 头,确保请求来自预期的域名。
- 使用双重提交 Cookie: 在 Cookie 中存储一个随机令牌,并在请求中验证该令牌是否与 Cookie 中的一致。
- 使用同源策略: 浏览器会阻止跨域的 AJAX 请求,这可以有效防止 CSRF 攻击。
XSS 攻击的原理如下:(通过设置自动运行的脚本代码来实现的)
- 攻击者在目标网站上注入恶意的 JavaScript 代码,这段代码可能会窃取用户的敏感信息,如 cookies、会话令牌等。
- 当用户访问包含恶意代码的页面时,该代码会在用户的浏览器中执行,从而造成安全隐患。
解决方法
- 输入验证和编码: 对用户输入的内容进行严格的验证和编码,确保不会注入恶意代码。
- 使用 Content Security Policy (CSP): 通过设置 CSP 头,可以限制页面加载的资源,从而防止 XSS 攻击。