我正在使用富文本编辑器从客户端接受具有 HTML 内容的输入数据。
在服务器端,我使用基于 PHP 的服务器并清理传入的数据。
是否有内置的 PHP 功能,它保留了 HTML 代码并删除了用于 XSS + SQL 注入代码的 Javascript。
我正在使用富文本编辑器从客户端接受具有 HTML 内容的输入数据。
在服务器端,我使用基于 PHP 的服务器并清理传入的数据。
是否有内置的 PHP 功能,它保留了 HTML 代码并删除了用于 XSS + SQL 注入代码的 Javascript。
据我所知,不存在这样的内置功能。
http://php.net/manual/en/filter.filters.sanitize.php中的清理过滤器似乎无法满足您的要求。您可以查看http://php.net/manual/en/book.filter.php,但没有设置过滤器来过滤 HTML。
我知道您不要求外部库,但我认为这可以帮助您解决您面临的问题:http: //htmlpurifier.org/
使用准备好的语句和参数化查询来防止SQL 注入。
如果您只想允许将某些标签保存在数据库中,您可以使用strip_tags()。它使您可以允许某些 HTML 标记。但是,注释和 PHP 标记将始终被删除。
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
关于 SQL 注入,您应该将PDO 与准备好的语句一起使用。这样,您发送到数据库的字符串与您想要的字符串完全相同,您无需使用它并逃避事情。
关于 XSS - 你应该看看owasp的XSS Filter Evasion Cheat Sheet。你可以在这里做几件事——你可以只允许已知的标签(并使用 php 的strip_tags函数去除所有其余的标签)。请注意,它不会阻止元素属性内部的 XSS(检查备忘单链接)。
您可以使用DOMDocument解析器来遍历所有元素并检查它们的属性并保留/删除您想要的任何内容。检查此以获取更多信息。