我写了一个PHP脚本来获取电子邮件内容.
这些内容是HTML格式.
我想显示内容,如下所示
<?php
$email_content = '
<html>
<script>alert("XSS");</script>
<body>
<div>Line1</div>
<div>Line2</div>
</body>
</html>
';
echo $email_content;
?>
Run Code Online (Sandbox Code Playgroud)
如您所见,它将导致XSS攻击.但是如果我使用htmlspecialchars函数,它将无法显示正确的HTML格式,在这种情况下我该怎么做?谢谢.
HTMLPurifer可以做到这一点:
require_once '/path/to/HTMLPurifier.auto.php';
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);
Run Code Online (Sandbox Code Playgroud)
它需要脏HTML(即可能包含Javascript)并删除任何脚本.
PHP没有任何本机或内置的东西,可以像HTMLPurifier一样删除Javacript.您可以使用DOMDocument,但这将是一项冗长的任务,因为Javascript可以在某些属性中执行(onerror,onclick),而不仅限于此<script></script>.
| 归档时间: |
|
| 查看次数: |
954 次 |
| 最近记录: |