点击劫持
用户想点登录按钮意思是我要登录、结果登录按钮后面写了个删号
xss(跨站脚本攻击) 攻击是指黑客往 HTML 文件中或者 DOM 中注入恶意脚本(窃取 cookie,监听用户事件等),实现攻击
如何注入的?
存储型 XSS 攻击
注入的脚本永久存储在目标服务器上。当浏览器发送数据请求时,受害者会从服务器接收到该恶意脚本。
反射型 XSS 攻击(点恶意链接)
将一段含有恶意代码的请求提交给 Web 服务器,Web 服务器接收到请求时,又将恶意代码反射给了浏览器端
- 基于 DOM 的 XSS 攻击
在 Web 资源传输过程或者在用户使用页面的过程中修改 Web 页面的数据
解决:
- 服务器对输入脚本进行过滤或转码
- 使用 HttpOnly 属性
CSRF(跨站请求伪造)就是黑客利用了用户的登录状态,并通过第三方的站点来做一些坏事
是一种挟制用户在当前已登录的 Web 应用上执行非本意的操作的攻击方法
维基百科提到了一个很好的 CSRF 示例。在这种情况下,某人访问了一个实际上并不是图像的图像(例如在未经过滤的聊天或论坛中),而是向银行服务器发出取款请求:
<img
src="https://bank.example.com/withdraw?
account=bob&amount=1000000&for=mallory" />
2
3
现在如果你登录银行账户并且你的 cookie 仍然有效(并且没有其他验证),那么在加载包含此图像的 HTML 后你将立即转账。对于需要 POST 请求的端点,可以在加载页面时以编程方式触发 <form>
提交(可能在不可见的 <iframe>
中):
解决:
- Referer 和 Origin(只包含域名) 属性(服务器的策略是优先判断 Origin 后 Referer)
- 服务器应向浏览器提供会话唯一的 CSRF 令牌。然后,只要浏览器提交表单(在
<form>
元素的隐藏输入字段中),就可以包含此令牌。对于所有可能执行操作的非 GET 请求,服务器会将接收到的令牌与其存储的会话值进行比较。如果令牌不匹配,请求将被中止。 - 敏感操作的会话 Cookie 应具有较短的生命周期,并且 SameSite 属性设置为 Strict 或 Lax。
中间人(MitM)
第三方拦截了 Web 服务器和客户端(浏览器)之间的流量,并冒充 Web 服务器以捕获数据(例如登录凭据或信用卡信息)。流量被传递,可能会进行修改。公共 Wi-Fi 网络是执行此类攻击的典型手段。偷走未加密数据
会话劫持
会话劫持是指获取并滥用用户的已验证会话。session id 或者 cookie
通过部署严格的内容安全策略(Content-Security-Policy),可以限制数据泄露途径。
请注意,子域名(例如 application.example.com)可以通过设置 Domain
属性来设置一个 cookie,以便在发送请求到 example.com 或其他子域名时将其发送出去:
浏览器存储了非法 cookie 并将其发送到 example.com 下的所有其他页面。