web安全-xss攻击
2023-02-18 16:29:45 时间
web安全问题
xss攻击
1.html标签
html内容的转义 escapeHtml
str = str.replace(/&/g,'&');
str = str.replace(/</g,'<');
str = str.replace(/>/g,'>');
2.html属性 单双引号 空格
escapeHtmlProperty
str = str.replace(/"/g,'&quto');
str = str.replace(/'/g,'''); //单引号
//str = str.replace(/ /g,' '); //空格 属性不要出现 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
相关文章
- 利用php脚本+redis,生成CSV测试文件,重复率为20%
- [MySQL]索引
- [MySQL]brew 安装 配置 操作 mysql(中文问题)
- [MySQl]MySQL忘记密码
- [MySQL]增加用户 授权 远程登录
- [编程题目]泥塑课
- How can I learn to program?
- 学渣的心酸(求职篇)
- 时间复杂度问题
- 测试Flask应用_学习笔记
- Flask模板_学习笔记
- 初学Flask(1)
- 今天安装了麒麟系统
- 看球时的随笔——“如何掌握新的知识”
- str()和repre()的区别
- 关于抛出异常和捕获异常
- 博客的第一天
- notepad++快捷键大全
- 软件测试|Monkey基本参数介绍
- 使用 Redis 实现延时队列