php 读出html xss,使用PHP清理HTML5(防止XSS)

PHP提供了解析方法以防止代码PHP / SQL注入(即mysql_real_escape_string()).对于HTML / CSS / JavaScript,情况并非如此.为什么?

第一:HTML / CSS / Javascript的唯一目的是显示信息.您可以接受HTML的某些元素或根据您的要求拒绝它们.

其次:由于HTML / CSS / JS元素数量非常多(也在不断增加),因此无法尝试控制HTML.你不能指望一个功能性的解决方案.

这就是我建议采用自上而下的解决方案的原因.我建议开始限制所有内容,然后只允许一定数量的标签.一个很好的基础可能是使用BBCdode,非常受欢迎.如果您想“解锁”BBCode之外的其他特定标签,您可以随时添加一些.

这就是BBCode类脚本在论坛和网站上流行的原因(包括堆栈溢出). WISIGIG编辑器专为管理员/内部使用而设计,因为您不希望网站管理员注入不良内容.

自下而上的方法发誓要失败. HTML清理程序暴露于指数级复杂性并且不保证任何内容.

编辑1

你说这是一个卫生问题,而不是前端问题.我不同意,因为你无法处理所有现在和将来的HTML实体,你最好将它在前端级别限制为100%肯定.

这就是说,也许以下是适合您的解决方案:

>您可以通过条带化所有实体来清理代码

除了使用PHP的strip_tags()的白名单中的那些.

>您还可以删除所有剩余的标签属性(属性)

通过使用PHP的preg_replace()和一些正则表达式.

$string = "put some very dirty HTML here.";

$string = strip_tags($string, '


');

$string = preg_replace("/]*?(\/?)>/i",'', $string);

echo $string;

这将返回您的清理文本.

注意:我已经排除了标记的属性删除,因为您可能仍希望保留href =“”属性.因此[b-z] [B-Z]正则表达式.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值