Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 想要';沙箱';用户表单提交HTML_Php_Html - Fatal编程技术网

Php 想要';沙箱';用户表单提交HTML

Php 想要';沙箱';用户表单提交HTML,php,html,Php,Html,我有一个带有文本区的用户表单,允许用户提交html格式的数据。html本身受到PHP strip_标记的限制,但当然不进行完成检查等 我的基本问题是,如果用户未关闭标记,例如标记,那么随后的所有内容,包括“在”用户内容显示区域之外的页面内容,现在可能会出现格式错误 检查标记是否正确完成是我将考虑的一个解决方案,但理想情况下,我希望以某种方式将用户HTML化的内容与网站的其余部分隔离开来。实现完全隔离的唯一方法是使用防火墙 另一个解决方案是限制用户可以使用的html标记。将用户限制为段落和内联标记

我有一个带有文本区的用户表单,允许用户提交html格式的数据。html本身受到PHP strip_标记的限制,但当然不进行完成检查等

我的基本问题是,如果用户未关闭标记,例如
标记,那么随后的所有内容,包括“在”用户内容显示区域之外的页面内容,现在可能会出现格式错误


检查标记是否正确完成是我将考虑的一个解决方案,但理想情况下,我希望以某种方式将用户HTML化的内容与网站的其余部分隔离开来。

实现完全隔离的唯一方法是使用防火墙


另一个解决方案是限制用户可以使用的html标记。将用户限制为段落和内联标记(
string
em
a
,等等)将确保您可以将所有内容包装在一个div标记中,而不必担心打开的标记。

只需使用一些功能来完成未关闭的标记。 这可以帮助您: 使用。非常彻底和易于使用的独立插件。它确保所有标记都是有效的XHTML,并防止XSS攻击


我建议在数据库中保存用户HTML输入的两个副本。一个副本是他们提交的原始表单,您可以在他们以后编辑页面时使用,第二个副本是经过HTML净化器净化的表单,您可以将其显示在输出中。存储经过消毒的版本比在每次加载页面时运行HTML净化器快得多。

不幸的是,我尝试将内容包装在div标记中,但无论如何都会“溢出”。检查用户提交的内容是否使用div(其他块级标记)这可能会导致包装div出现问题。如果不是这样,您的html可能会出现一些问题。我会开始玩弄你的css(在你的div周围放一个红色的边框,并用/height固定)来隔离问题。嗯,你确定吗?我正在尝试一个简单的例子,我看到了溢出问题。。。[开始代码]这是一个示例.com“>测试此链接[结束代码]上述代码导致问题。