Php 如何在不丢失HTML和删除JS/SQL的情况下清理字符串

Php 如何在不丢失HTML和删除JS/SQL的情况下清理字符串,php,sanitization,rich-text-editor,input-sanitization,Php,Sanitization,Rich Text Editor,Input Sanitization,我使用富文本编辑器从客户端接收包含HTML内容的输入数据 在服务器端,我使用基于PHP的服务器并清理传入的数据 是否有内置的PHP功能,它保留HTML代码并删除XSS+SQL注入代码的Javascript。据我所知,不存在这样的内置功能 来自的“清理”筛选器似乎无法满足您的请求。您可以查看一下,但是没有设置过滤器来过滤HTML 我知道您不需要外部库,但我认为这是一个可以帮助您解决所面临问题的库:关于您应该使用的SQL注入。这样,您发送到数据库的字符串与您想要的字符串完全相同,您不需要使用它和转义

我使用富文本编辑器从客户端接收包含HTML内容的输入数据

在服务器端,我使用基于PHP的服务器并清理传入的数据


是否有内置的PHP功能,它保留HTML代码并删除XSS+SQL注入代码的Javascript。

据我所知,不存在这样的内置功能

来自的“清理”筛选器似乎无法满足您的请求。您可以查看一下,但是没有设置过滤器来过滤HTML


我知道您不需要外部库,但我认为这是一个可以帮助您解决所面临问题的库:

关于您应该使用的SQL注入。这样,您发送到数据库的字符串与您想要的字符串完全相同,您不需要使用它和转义

关于XSS,您应该看看by。这里有几件事可以做——您可以只允许已知的标记(并使用php函数剥离所有其余的标记)。注意,它不会阻止元素属性内部的XSS(检查备忘单链接)。
您可以使用解析器遍历所有元素,检查它们的属性,并保留/删除您想要的任何内容。了解更多信息


如果您使用一些已知的框架,大多数框架都有一个内置的xss过滤器,因此您可以使用它(或者在代码中使用并从中学习)。

使用准备好的语句和参数化查询来防止

如果只允许在数据库中保存某些标记,可以使用。它允许您使用某些HTML标记。但是,注释和PHP标记将始终被剥离

$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
$text=”测试段落。

; //允许和 回音条标签($text,);
echo filter\u var($dirtyText,filter\u SANITIZE\u STRING);这对于使用它的remove html css的meFILTER\u SANITIZE\u字符串非常有效