前端安全策略

作者: 斗伽 | 来源:发表于2021-03-31 11:00 被阅读0次

    xss Cross-Site Scripting(跨站脚本攻击)

    1、用户输入什么直接显示在页面中,导致被恶意输入

    <img src=xxx onerror='alert(1)'></img>
    <img src=""><script>alert(document.cookie)<\/script>>
    <script>alert(document.cookie)<\/script>
    

    2、如果用户输入的前端没有校验发送给服务端,服务也没有校验,那么重新获取时就会出现攻击

    XSS 有哪些注入的方法

    • 在 HTML 中内嵌的文本中,恶意内容以 script 标签形成注入。
    • 在内联的 JavaScript 中,拼接的数据突破了原本的限制(字符串,变量,方法名等)。
    • 在标签属性中,恶意内容包含引号,从而突破属性值的限制,注入其他属性或者标签。
    • 在标签的 href、src 等属性中,包含 javascript: 等可执行代码。
    • 在 onload、onerror、onclick 等事件中,注入不受控制代码。
    • 在 style 属性和标签中,包含类似 background-image:url("javascript:..."); 的代码(新版本浏览器已经可以防范)。
    • 在 style 属性和标签中,包含类似 expression(...) 的 CSS 表达式代码(新版本浏览器已经可以防范)。

    措施

    (1)escapeHTML转义(输入过滤)
    (2)Content Security Policy

    解决:前端后台都需要对用户的输入进行校验、转义,url上也需要转义
    

    详解可以参考:https://www.jianshu.com/p/2d9da4490ae1

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

    如果用户在一个页面中登录后,用户信息保存到cookie中后, 当用户点击一个广告跳转到一个恶意网站,其中如果利用form来自动请求,会带着用户之前的cookie。此时如果是个转账操作就很危险

     <form name='myform' style="visibility: hidden" method="post" action="http://localhost:3000/pay">
            <input type="text" name="username" value="kimi">
            <input type="text" name="amount" value="1000">
    </form>
    
    document.myform.submit();
    

    解决:
    1、尽量不要存到cookie中
    2、使用token,cookie会自动发送,而token则需要手动加上
    3、判断refer来源,如果请求来源于非法则不响应

    用户信息存在localStorage、sessionStorage?
    cookie、localStorage、sessionStorage 有什么区别?

    详解可以参考: https://www.jianshu.com/p/205ae5a51fa1

    点击劫持

    遮盖一层iframe设置透明,点击页面按钮其实点的是iframe中的按钮。
    解决:判断请求头是否从iframe发起,如果是的话禁止

    sql注入

    用户输入sql语句到服务,服务直接执行导致sql崩溃
    解决:对用户输入都不可信,前后端都需要校验;

    dns劫持

    拦截dns域名解析,使其转换成一个假的ip。从而使用户跳转到假的网页
    解决:不要动态获取dns解析地址,手动设置;
    如何配置?

    相关文章

      网友评论

        本文标题:前端安全策略

        本文链接:https://www.haomeiwen.com/subject/iitnhltx.html