web安全(xss/csrf)简单攻击原理和防御方案(实战篇)

介绍:最近在学习node,就顺便写了web安全攻击的示例以及解决方案。参考了一些资料,自己理了一下思路,代码不是很完善,node也是在摸索阶段,请见谅。希望对那些对于安全不是很了解,后台知识不清楚的同学有所帮助。

项目代码如下:

app: 正常的网站
hack:模拟黑客攻击的网站
使用技术: node+express+react+mysql

项目介绍
1.代码目录

WechatIMG3062.jpeg

2. 建立数据库

WechatIMG31.jpeg

node app/mysql.js 先执行这个文件创建表和数据

WechatIMG32.jpeg

如图所示

WechatIMG30.jpeg

一、XSS(Cross-Site Scripting) 跨站脚本攻击

原理:恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。

1.这时候运行项目npm run start 打开home页面

WechatIMG33.jpeg

WechatIMG34.jpeg

WechatIMG36.jpeg

这个时候home页面是用react模板写的,React DOM 会在渲染的时候把内容(字符串)进行转义,所以字符串形式的标签是不会作为 HTML 标签进行处理的,所以输入script是不能执行的

所以加了一个利用ejs模板加载的页面xss.html(无论是从url上输入script标签例如http://localhost:4000/xss?text=还是直接获取数据库存储的代码都会被执行)

WechatIMG38.jpeg WechatIMG37.jpeg

WechatIMG39.jpeg

2.开始利用document.cookie攻击,按照刚才的方式把改成进行攻击

打开http://localhost:4000/xss会看到请求了http://localhost:5000/xss.html的接口 WechatIMG41.jpeg

在控制台可以看到5000端口的黑客网站已经打印出来了cookie,利用cookie我们完全可以在控制台设置cookie直接登录网站 WechatIMG42.jpeg

二、CSRF 跨站点伪造

原理: 诱导用户打开黑客的网站,在黑客的网站中,利用用户登录状态发起跨站点请求。

1.在登录状态下,打开localhost:5000/csrf.html页面,在控制台上我们看到了setDataList的请求,这个就是提交内容的接口,在4000的home页面可以看到内容改变了 image.png

正常网站内容被更改 WechatIMG44.png

image.png

解决方案(生成token, 接口带上nonce和timesTamp)

WechatIMG47.jpeg

WechatIMG46.jpeg

三、点击劫持

原理:用户在登陆 A 网站的系统后,被攻击者诱惑打开第三方网站,而第三方网站通过 iframe 引入了 A 网站的页面内容,用户在第三方网站中点击某个按钮(被装饰的按钮),实际上是点击了 A 网站的按钮。

  1. 打开http://localhost:5000/clickHijack.html点击按钮,实际上是点击了http://localhost:4000/home的关注按钮,因为iframe嵌入了4000的页面 30.jpeg

31.jpeg

WechatIMG50.jpeg

解决方案,对iframe嵌入做限制

一般现代浏览器支持Content-Security-Policy,可以替代老浏览器的X-Frame-Options image.png

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享🎁

😝朋友们如果有需要全套《黑客&网络安全入门&进阶学习资源包》,可以扫描下方二维码免费领取

1️⃣零基础入门

① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

img

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

img

因篇幅有限,仅展示部分资料

2️⃣视频配套资料&国内外网安书籍、文档

① 文档和书籍资料

img

② 黑客技术

img

因篇幅有限,仅展示部分资料

3️⃣网络安全源码合集+工具包

img

4️⃣网络安全面试题

面试题
上述所有资料 ⚡️ ,朋友们如果有需要全套 📦《网络安全入门+进阶学习资源包》,可以扫描下方二维码免费领取 🆓

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebAPI接口文档漏洞的防御是非常重要的,以下是一些常见的防御方法: 1. 鉴权和权限管理:确保只有经过授权的用户可以访问接口,并根据用户角色和权限限制他们的操作。使用基于令牌的身份验证机制,如OAuth,可以提供一定程度的安全性。 2. 输入验证和过滤:对于接口的输入参数进行验证和过滤,防止恶意用户提交非法或恶意数据。使用正则表达式、白名单过滤等技术可以有效地防止注入攻击、跨站脚本攻击等。 3. 输入参数编码:对于接口的输入参数,进行适当的编码处理,防止特殊字符的注入。例如,将HTML标签进行转义,以防止XSS攻击。 4. 错误处理和异常管理:合理处理和报告接口的错误和异常情况,避免泄露敏感信息。对于错误信息,可以根据用户角色进行脱敏处理,只返回必要的错误提示信息。 5. 日志记录和监控:及时记录接口的访问日志和异常情况,并建立监控机制,及时发现异常行为和攻击尝试。通过分析日志和监控数据,可以及时发现潜在的漏洞和安全风险。 6. 安全审计和漏洞扫描:定期进行安全审计和漏洞扫描,发现和修复潜在的漏洞。可以使用工具和服务来扫描接口的安全性,例如OWASP ZAP、Nessus等。 7. 安全意识培训:加强开发团队对接口安全的意识培训,教育开发人员遵循安全最佳实践,避免常见的安全漏洞。 总之,WebAPI接口文档漏洞的防御需要综合考虑技术、管理和人员培训等多个方面,保障接口的安全性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值