Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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/Perl从提交的html表单中的文本中剥离自定义标记?_Php_Html_Perl_Tags_Strip - Fatal编程技术网

如何使用PHP/Perl从提交的html表单中的文本中剥离自定义标记?

如何使用PHP/Perl从提交的html表单中的文本中剥离自定义标记?,php,html,perl,tags,strip,Php,Html,Perl,Tags,Strip,我有一份新闻投稿表。我希望通过剥离所有html标记来保护它免受XSS之类的攻击。然后,我将使用此格式转换所有其他标记 [tagname attributes][/closetagname] 对此 <tagname attributes></closetagname> 。 问题是如何将标签转换成这种格式。 <?php $text = '[tagname attributes][/closetagname]'; $text = preg_replace('/\[

我有一份新闻投稿表。我希望通过剥离所有html标记来保护它免受XSS之类的攻击。然后,我将使用此格式转换所有其他标记

[tagname attributes][/closetagname]
对此

<tagname attributes></closetagname>

。 问题是如何将标签转换成这种格式。


<?php
$text = '[tagname attributes][/closetagname]';
$text = preg_replace('/\[([^\[]+?)\]/', '<$1>', $text);
echo $text;
?>
假设您没有在标签中找到[和]。


<?php
$string = '<tagname attributes></closetagname>';
$clean = str_replace(array('<','>'),array('[',']'), $string);
echo $clean; //[tagname attributes][/closetagname]
?>
假设您没有在标签中找到[和]。


<?php
$string = '<tagname attributes></closetagname>';
$clean = str_replace(array('<','>'),array('[',']'), $string);
echo $clean; //[tagname attributes][/closetagname]
?>
当然,这将替换


当然,这将替换的所有实例。如果您使用的是PHP,我认为内置和PHP扩展的组合应该满足您的需要。

如果您使用的是PHP,我认为,内置和PHP扩展的组合应该满足您的需要。

仅通过“剥离所有html标记”和“转换所有其他标记”,您将无法从XSS中获得安全。对抗XSS只能将一些已知的标签(和一些已知的属性)列入白名单,而黑名单总是失败的。 这是一本书


在PHP中清除HTML代码的一个很好的解决方案是使用。

仅通过“剥离所有HTML标记”和“转换所有其他标记”将无法保护XSS。对抗XSS只能将一些已知的标签(和一些已知的属性)列入白名单,而黑名单总是失败的。 这是一本书


在PHP中清除HTML代码的一个好方法是使用。

您确定这可以保护您免受XSS攻击吗?那么,攻击向量不就是
[tagname EXPLOIT]
而不是
吗?我认为你最好用谷歌搜索一些轻量级的BBCODE库或类似的库,在那里你可以控制允许哪些属性阻止你使用XSS你确定可以保护你免受XSS攻击吗?那么,攻击向量不是仅仅是
[tagname EXPLOIT]
而不是
吗?我认为你最好用谷歌搜索一些轻量级的BBCODE库或类似的库,在那里你可以控制允许哪些属性阻止你使用XSS。在处理XSS问题时,你不能假设任何东西。同意。。我只是把它看作一个模式匹配问题。仅仅通过排除HTML标记来避免XSS本身的概念是模糊的。在处理XSS问题时,你不能假设任何东西。同意。。我只是把它看作一个模式匹配问题。仅仅通过排除HTML标记本身来避免XSS的概念是模糊的。