客户端漏洞
前言
在上一章中,我们简单学习了一写服务端漏洞,还有漏洞的一些情况,接下来我来介绍一些客户端漏洞大致分为这几种,开放重定向,XSS,CSRF,点击劫持,CORS跨域配置错误,WebSocket等等接下来将会一一介绍。
开放重定向
什么是开放重定向呢?某些需要重定向其他站点的功能,往往在参数中携带需要重定向的URL,但是实际程序的逻辑没有控制好重定向的范围,导致攻击者可以构造恶意链接,诱导用户重定向到恶意站点,这种一般都出现在钓鱼网站中,诱导用户到他们提前准备好的网站。
那么怎么解决这种问题呢?我们可以定义重定向严格进行白名单控制并进行校验匹配白名单。
XSS
XSS就是跨脚本攻击,这种本质上就是一种script代码注入,攻击者往目标web页面里插入恶意script代码,当用户访问页面时,客户端需要交互,嵌入到web里面的script代码就会被执行,从而达到恶意攻击用户的目的,这种漏洞通常会危害包括窃取用户敏感信息,以用户身份进行敏感操作。
防护方法:
- 输入过滤,对输入的特殊字符进行拦截,禁止前端提交特殊字符
- 输出过滤,当字符输出到Dom的时候,对危险字符进行html encode,避免被跨脚本攻击,使用vue/react等框架时候,避免使用危险指令,而应该使用安全指令
- 富文本场景,比如在文章发布场景,本身是需要提供富文本功能,这时候需要严格限制tag和attribute,可以在代码层面做白名单或者黑名单
- csp:用于缓解xss,理念是对当前站点允许加载什么源的资源,发送什么请求进行限制
CSRF
CSRF就是值跨站请求伪造,一些允许攻击者诱导用户访问恶意链接,执行用户非预期执行的操作。这种攻击方式会导致用户执行敏感操作,如关注其他用户,或者更改用户账号的安全邮箱等等
防护手段:
- 防护的核心就是判断请求的来源
- CSRF tokens:首次访问时候给客户端传递一个token,客户端每次访问的时候都必须带上此token才能访问
- SameSite cookies,核心就是禁止某些场景发送第三方cookie
- 检验Referter来源是否是合法站点
点击劫持
点击劫持就是一种在网页中将而已代码等隐藏在看似无害或者存在诱导的内容之下,并诱使用户点击的手段,用户点击后往往会之下一些非预期的操作。
防护的核心就是不让非预期网站iframe我们的站点
CORS跨域配置错误
CORS全称是“跨域资源共享”,用于解决网页应用跨域访问的需求。
CORS错误配置:CORS本身不存在漏洞,而是由于开发者在配置过程中,错误配置跨域访问Allow List,导致非预期的站点可以跨域访问,最终导致信息泄漏
防护方式:
- 防护核心是正确设置跨域白名单
- 代码层:middleware统一处理
- 网关层:nginx反代统一拦截处理
WebSocket
区别于http,只是不同的交互协议,本质上http服务端的漏洞,在WebSocket上也可能存在。
防护手段:
- Cookie鉴权:限制请求的Origin
- ticket/token鉴权:http服务器提供接口,用于获取临时的身份凭证,并传递到WebSocket的初始化流程中
总结
网络安全现在是越来越被重视,我们学习这些知识的人也应该要规范自己的行为,祖国为我们提供良好的教育是为了让我们成为栋梁,而不是为了一己私利为祸一方。