客户端漏洞
一、开放重定向
定义:某些需要重定向到其他站点的功能,往往在参数中携带需要重定向的URL,但实际程序逻辑,没有控制好重定向的范围,导致攻击者可以构造恶意链接,诱导用户重定向到恶意站点。
危害:钓鱼攻击。
修复方案:对重定向严格进行白名单控制并正确校验匹配白名单。
二、XSS(跨站脚本)攻击
本质是一种Script代码注入,攻击者往目标Web页面里插入恶意Script代码,当用户访问页面时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
危害:通常的危害包括窃取用户敏感信息,以用户身份执行敏感操作。
防护方案:
1.输入过滤:对输入的特殊字符进行拦截,禁止前端提交特殊字符。
2.输出过滤:
a、当字符输出到Dom时,对危险字符进行html encode,避免XSS。
b、使用vue/react等框架时,避免使用危险指令,而应该使用安全指令。
3.富文本场景:如文章发布场景,这时需要严格限制tag和attribute,可以在代码层面做白名单或黑名单。
4.CSP:用于缓解XSS,理念是对当前站点允许加载什么源的资源,发送什么请求能进行限制。
三、CSRF(跨站请求伪造)
允许攻击者诱导用户访问恶意链接,执行用户非预期执行的操作。
危害:让用户执行敏感操作,如关注其他用户,或更改账号的安全邮箱等。
防护方式:防护核心是判断请求的来源
1.CSRF tokens:首次访问时候给客户端传递一个token,客户端每次访问时都必须带上此token。
2.SameSite cookies:Strick->Lax(Default)->None,核心是禁止某些场景发送第三方cookie。
3.Referer-based validation:校验Referer来源是否是合法站点。
四、点击劫持
是一种在网页中将恶意代码等隐藏在看似无害或存在诱导的内容之下,诱导用户点击的手段,用户点击后往往会执行一些非预期的操作。
防护方式:
1.X-Frame-Options:DENY/SAMEORIGIN。
2.CSP:frame-ancestors指令,用于设置允许frame的source列表。