【安全测试】2_客户端脚本安全测试 _XSS和CSRF

文章目录

  • 一、跨站脚本攻击(XSS)
    • [1.1 XSS攻击的原理](#1.1 XSS攻击的原理)
    • [1.2 XSS攻击的类型](#1.2 XSS攻击的类型)
    • [1.3 XSS攻击常用的HTML标签](#1.3 XSS攻击常用的HTML标签)
    • [1.4 XSS攻击步骤](#1.4 XSS攻击步骤)
    • [1.5 案例](#1.5 案例)
      • [1.5.1 窃取用户Cookie](#1.5.1 窃取用户Cookie)
      • [1.5.2 注入外部JS文件](#1.5.2 注入外部JS文件)
    • [1.6 XSS攻击防御](#1.6 XSS攻击防御)
    • [1.7 XSS漏洞扫描](#1.7 XSS漏洞扫描)
    • [1.8 总结](#1.8 总结)
  • 二、跨站点请求伪造(CSRF)
    • [2.1 CSRF攻击原理](#2.1 CSRF攻击原理)
    • [2.2 CSRF攻击防御](#2.2 CSRF攻击防御)
    • [2.3 跨站请求删除微博案例](#2.3 跨站请求删除微博案例)
  • 三、总结

一、跨站脚本攻击(XSS)

XSS:跨站脚本(cross site script)为了避免与前端css混淆,改名为xss。

跨站脚本攻击:是指攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入的代码会被执行,从而达到恶意攻击用户的目的。

XSS攻击的危害:

  • 盗取各类用户账户;
  • 盗取、注入修改、删除客户端敏感数据;
  • 网站木马;
  • 肉鸡(控制受害机攻击别的机器)
yacas 复制代码
跨站脚本攻击(XSS):只针对web项目
攻击者通过改变前端页面元素请求地址或注入JS,来获取非法数据(cookie)

1.1 XSS攻击的原理

1.2 XSS攻击的类型

1、存储型:将攻击代码存储到数据库,每次打开指定的页面自动加载执行。

yacas 复制代码
场景:留言板、注册

2、反射型:临时修改页面代码,用户打开页面中招。

yacas 复制代码
场景:图片、连接

1.3 XSS攻击常用的HTML标签

1.4 XSS攻击步骤

1、页面查找XSS漏洞

2、注入恶意程序

3、客户端访问注入恶意程序的页面

4、获取客户端敏感信息或攻击

javascript 复制代码
页面查找XSS漏洞:
  - 脚本:<script>alert(123)</script>
  - 说明:一般作为漏洞测试使用,如果页面支持弹出框执行,意味着系统没有过滤<>和/字符,说明存在XSS漏洞

1.5 案例

1.5.1 窃取用户Cookie

1.5.2 注入外部JS文件

1.6 XSS攻击防御

1、HttpOnly

  • 给关键的Cookie都加上HttpOnly属性
  • 浏览器将禁止页面的javascript访问带有HttpOnly属性的Cookie

2、输入检查

  • 检查用户输入的数据中是否包含了一些特殊字符,如<、>、'、"
  • 如果发现存在特殊字符,则将这些字符过滤或者编码

3、输出检查

  • 在变量输出到HTML页面时,可以使用编码或者转义的方式来防御XSS攻击

1.7 XSS漏洞扫描

1、手工检测

  • 优点:校验结果精准,但是对于一个大型Web应用,效率比较低
  • 重点:考虑哪里有输入、输入的数据在什么地方展示。

2、软件自动检测

  • 优点:方便,却存在误报,或者有些隐蔽的XSS无法检测出。

1.8 总结

  • XSS安全测试解决什么问题?
yacas 复制代码
避免客户端被注入恶意JS程序或修改标签链接地址,导致数据丢失或访问黑客网站。
  • XSS测试人员使用的步骤
yacas 复制代码
1、验证页面是否屏蔽了JS的注入
2、如果存在JS注入,提醒开发防护策略

二、跨站点请求伪造(CSRF)

CSRF ( Cross-site request forgery)是指跨站请求伪造

理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求或进行某些非常操作

2.1 CSRF攻击原理

2.2 CSRF攻击防御

1、验证码

  • 验证码被认为是对抗CSRF攻击最简洁有效的防御方法,但是处于用户体验考虑,不能给所有的操作都加上验证码

2、验证HTTP Referer

  • HTTP Referer可被用于检查请求是否来自合法的"源"
yacas 复制代码
Referer引用,是HTTP请求header的一部分

3、添加token并验证

  • 在请求地址中添加token并验证

2.3 跨站请求删除微博案例

yacas 复制代码
演示步骤:
1.黑客先发布一条微博,进行删除操作
2.黑客通过抓包找到删除微博的接口,确定传递的参数(一般都是id)
3.黑客找到其他用户发布的微博信息,并替换请求参数
4.黑客在自己的网站上伪造一个删除别人微博的请求: `<img th:src="http://121.43.169.97:1688/delBlog?id=101"/>`
5.黑客在发微博页面输入链接: '<a href=" http://121.43.169.97:9999/csrf" target="_blank">点击有惊喜</a>`,并诱惑用户进行点击
6.用户点击诱惑链接之后跳转到黑客网站,在黑客网站中触发删除微博的请求,进而删除用户资源.

三、总结

相关推荐
mCell4 小时前
如何零成本搭建个人站点
前端·程序员·github
mCell4 小时前
为什么 Memo Code 先做 CLI:以及终端输入框到底有多难搞
前端·设计模式·agent
恋猫de小郭5 小时前
AI 在提高你工作效率的同时,也一直在增加你的疲惫和焦虑
前端·人工智能·ai编程
银烛木5 小时前
黑马程序员前端h5+css3
前端·css·css3
m0_607076605 小时前
CSS3 转换,快手前端面试经验,隔壁都馋哭了
前端·面试·css3
听海边涛声5 小时前
CSS3 图片模糊处理
前端·css·css3
IT、木易5 小时前
css3 backdrop-filter 在移动端 Safari 上导致渲染性能急剧下降的优化方案有哪些?
前端·css3·safari
0思必得05 小时前
[Web自动化] Selenium无头模式
前端·爬虫·selenium·自动化·web自动化
anOnion5 小时前
构建无障碍组件之Dialog Pattern
前端·html·交互设计