前端安全

53 阅读3分钟

csrf

  • 基本概念和缩写

csrf通常称为跨站请求伪造,英文名:Cross-site request forgery 缩写 csrf。CSRF指的是攻击者盗用了你的身份,以你的名义发送恶意的请求,给你造成个人隐私泄露及财产安全.

  • 攻击原理

1、用户正常登录A银行网站,

2、A网站返回cookie信息给用户,浏览器保存cookie信息

3、在A网站没有退出登录的情况下(或者说cookie信息没过期), 登录了恶意网站B

4、恶意网站B,提前准备好转账表单或者其它请求 ,将其隐藏. 把提交到A网站的按钮设置为一个"领取优惠券"的图片链接 用户 点击链接

5、在用户主观未知的情况下,访问A网站,此时浏览器会自动携带cookie信息

6、A网站识别到cookie信息,默认为是用户本人做出的请求,根据请求做出相应的操作.

7、用户收到损失.

  • 防御措施

1、token验证

2、referer验证 页面来源验证

3、隐藏令牌

xss

  • 攻击原理

XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

XSS攻击的危害包括

1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

3、盗窃企业重要的具有商业价值的资料

4、非法转账

5、强制发送电子邮件

6、网站挂马

7、控制受害者机器向其它网站发起攻击

  • 防御措施

只要有输入数据的地方,就可能存在 XSS 危险。

httpOnly: 在 cookie 中设置 HttpOnly 属性后,js脚本将无法读取到 cookie 信息。

输入过滤: 一般是用于对于输入格式的检查,例如:邮箱,电话号码,用户名,密码……等,按照规定的格式输入。不仅仅是前端负责,后端也要做相同的过滤检查。因为攻击者完全可以绕过正常的输入流程,直接利用相关接口向服务器发送设置。

转义 HTML: 如果拼接 HTML 是必要的,就需要对于url中的引号,尖括号,斜杠进行转义,但这还不是很完善.想对 HTML 模板各处插入点进行充分的转义,就需要采用合适的转义库.

白名单: 对于显示富文本来说,不能通过上面的办法来转义所有字符,因为这样会把需要的格式也过滤掉。这种情况通常采用白名单过滤的办法,当然也可以通过黑名单过滤,但是考虑到需要过滤的标签和标签属性实在太多,更加推荐使用白名单的方式。