我在尝试删除/和\字符时遇到问题。当我尝试剥离时使用\它剥离\但当我尝试///时它根本不剥离。
function stripinname( $text )
{
$text = preg_replace(
array(
'/\|/','/\"/','/\</','/\>/','/\s[\s]+/','/^[\-]+/','/[\-]+$/','/\%/','/\\\\/','/\////','/\@/','/\&/','/\:/','/\;/','/\-/',
'@<head[^>]*?>.*?</head>@siu',
'@<style[^>]*?>.*?</style>@siu',
'@<script[^>]*?.*?</script>@siu',
'@<object[^>]*?.*?</object>@siu',
'@<embed[^>]*?.*?</embed>@siu',
'@<applet[^>]*?.*?</applet>@siu',
'@<noframes[^>]*?.*?</noframes>@siu',
'@<noscript[^>]*?.*?</noscript>@siu',
'@<noembed[^>]*?.*?</noembed>@siu',
// Add line breaks before and after blocks
'@</?((address)|(blockquote)|(center)|(del))@iu',
'@</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))@iu',
'@</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))@iu',
'@</?((table)|(th)|(td)|(caption))@iu',
'@</?((form)|(button)|(fieldset)|(legend)|(input))@iu',
'@</?((label)|(select)|(optgroup)|(option)|(textarea))@iu',
'@</?((frameset)|(frame)|(iframe))@iu',
),
array(
' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',"$0", "$0", "$0", "$0", "$0", "$0","$0", "$0",), $text );
// you can exclude some html tags here, in this case B and A tags
return strip_tags($text);
}
答案 0 :(得分:3)
您知道MSIE是否支持使用behavior:url()
从CSS加载javascript?
您知道我们可以在javascript:
代码中执行<img>
个网址吗?
使用其他人的HTML清理程序; HTML Purifier没问题 - 它有很多用户,每当有人发现其中的错误时,它就会得到修复,所有人使用它会带来好处。
如果你找到它,你的代码中的任何错误(就像我现在正在看的那个)都会被修复。
我会找到一种方式。
我一直都这么做。
您的代码不起作用的原因是您不理解它。在这样的领域不理解你的程序与安全相关的问题来自哪里。既然你已经决定我只是“大肆宣传”,那你就忽视了我的建议。这样做会对整个软件开发人员/工程师行业造成伤害:
,/,
匹配斜杠。preg_replace()
实际上如何匹配正则表达式:要匹配所有斜杠,您需要全局匹配它们,如,/,g
/
会在HTML标记内合法显示。通过替换它,我实际上可以创建您试图剥离的HTML标记。strip_tags()
能够完成它所说的内容。它没有。preg_replace()
可以返回NULL
。你有这么多狂妄自大;你认为你已经掌握了这个伟大的演出的秘密,它只涉及到关于stackoverflow的问题以及从PHP wiki复制/粘贴示例。 您需要停止此 。编写无错误的程序需要理解每个单词,虽然我很乐意帮助你学习如何做到这一点,但我必须坚持你的行为负责任。
从信誉良好的来源获取这些惯例,并从其他人的错误中吸取教训;您的客户/雇主/等不值得您的错误;我们的行业不应该受到这种废话。