如何使用PHP/Perl从提交的html表单中的文本中剥离自定义标记?
我有一份新闻投稿表。我希望通过剥离所有html标记来保护它免受XSS之类的攻击。然后,我将使用此格式转换所有其他标记如何使用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('/\[
[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中清除HTML代码的一个很好的解决方案是使用。仅通过“剥离所有HTML标记”和“转换所有其他标记”将无法保护XSS。对抗XSS只能将一些已知的标签(和一些已知的属性)列入白名单,而黑名单总是失败的。 这是一本书
在PHP中清除HTML代码的一个好方法是使用。您确定这可以保护您免受XSS攻击吗?那么,攻击向量不就是
[tagname EXPLOIT]
而不是
吗?我认为你最好用谷歌搜索一些轻量级的BBCODE库或类似的库,在那里你可以控制允许哪些属性阻止你使用XSS你确定可以保护你免受XSS攻击吗?那么,攻击向量不是仅仅是[tagname EXPLOIT]
而不是
吗?我认为你最好用谷歌搜索一些轻量级的BBCODE库或类似的库,在那里你可以控制允许哪些属性阻止你使用XSS。在处理XSS问题时,你不能假设任何东西。同意。。我只是把它看作一个模式匹配问题。仅仅通过排除HTML标记来避免XSS本身的概念是模糊的。在处理XSS问题时,你不能假设任何东西。同意。。我只是把它看作一个模式匹配问题。仅仅通过排除HTML标记本身来避免XSS的概念是模糊的。