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*\/?script\s*>/g,'');
    html = html.replace(/javascript:[^'"]*/g,'');
    html = html.replace(/onerror\s*=\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

转载于:https://www.cnblogs.com/weizaiyes/p/7722119.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值