zoukankan      html  css  js  c++  java
  • web安全-xss攻击

    web安全问题

    xss攻击

    1.html标签
    html内容的转义 escapeHtml
    str = str.replace(/&/g,'&amp');
    str = str.replace(/</g,'&lt');
    str = str.replace(/>/g,'&gt');

    2.html属性 单双引号 空格
    escapeHtmlProperty
    str = str.replace(/"/g,'&quto');
    str = str.replace(/'/g,'&#39'); //单引号
    //str = str.replace(/ /g,'&#32'); //空格 属性不要出现 src=1.jpg 要有引号

    3.input富文本
    输入的时候进行过滤

    <img src="abc" onerror="alert(1)">
    var xssFilter = function(html){
    	if(!html) return ' ';
    	html = html.replace(/<s*/?scripts*>/g,'');
    	html = html.replace(/javascript:[^'"]*/g,'');
    	html = html.replace(/onerrors*=s*['"]?[^'"]*['"]?/g,'');
    }
    

    按白名单保留部分标签和属性 (除了允许的标签和属性 其他不允许)

    CSP

    内容安全策略
    用于指定哪些内容可以被执行
    script-src

    php防御xss

    1.内置函数转义
    strip_tags() //去除<>
    htmlspecialchars() // < > & ' " 转义
    htmlspecialchars($content,ENT_QUTOS)
    2.DOM解析白名单

    3.第三方库
    如github anti-xss
    html purifier

    <?php
    require_once './library/HTMLPurifier.auto.php'; //防止重复引用
    if(strtolower($_SERVER['REQUEST_METHOD'])=='post'){
        $content = $_POST['content'];
        $purifier = new HTMLPurifier();
        $content = $purifier->purify($content);
    }
    ?>
    <div><?php echo $content;?></div>
    <?php
    }
    ?>
    <form method="post">
        <textarea name="content">hello</textarea>
        <button type="submit">confirm</button>
    </form>
    

    4.CSP

  • 相关阅读:
    网站
    世上本无事,庸人自扰之
    mac系招聘BBS
    新浪微博语录帝摘录
    dwz jui
    cheap vps
    facebook的开发标准
    rails的一些插件
    租房宝
    在Z10上用3G
  • 原文地址:https://www.cnblogs.com/weizaiyes/p/7722119.html
Copyright © 2011-2022 走看看