删除<;脚本>;和其他带有php的标记

删除<;脚本>;和其他带有php的标记,php,Php,对于一个小的单页CMS,我想替换script和其他人们可能用于恶意的标签 我试过了,但不知什么原因它不起作用 一页CMS有6个字段可编辑。这些文件保存在纯文本文件中。 当我编辑其中一个时,我需要它删除所有标记,如脚本,嵌入,对象,和其他标记 我已经签出了,但我不明白它应该如何工作,因为我不熟悉php。我想看起来有点太大了 这是代码(在这里,我尝试从名为新闻内容的文本区域的脚本标记中删除标记): /i';$ersetzungen[1]='/\n我100%同意那句话。我只是指出了你的代码中被破坏的部

对于一个小的单页CMS,我想替换
script
和其他人们可能用于恶意的标签

我试过了,但不知什么原因它不起作用

一页CMS有6个字段可编辑。这些文件保存在纯文本文件中。 当我编辑其中一个时,我需要它删除所有标记,如
脚本
嵌入
对象
和其他标记

我已经签出了,但我不明白它应该如何工作,因为我不熟悉php。我想看起来有点太大了

这是代码(在这里,我尝试从名为
新闻内容
的文本区域的
脚本
标记中删除标记):


<是正则表达式中的特殊字符,需要对其进行转义

    $newscontent = preg_replace('/\<(script|object|embed).+?\<\/\1\>/im', '', $newscontent);

$newcontent=preg\u replace('/\您的代码不起作用,因为您正在对变量
$newcontent
执行替换,但将
$\u POST['newcontent']
写入文件。我猜您已打开register globals(这是错误的),否则将生成错误

我建议你坚持使用HTMLPurifier。如果人们有“坏的意图”,他们可能会在文本中添加很多不好的东西,而你的方法甚至不会触及表面。例如,如果你要修复代码,它不会阻止人们添加以下内容:

<img src="http://www.google.com/logo.gif" onload="javascript:bad stuff here" />


更不用说不同字符集的复杂性了。

这里不建议使用手工制作的变通方法。如果安全是目标,那么请使用经过验证的工具来实现。这就是HTMLPurifier。感谢您的回复。我尝试使用HTMLPurifier,但由于某些原因,我出现以下错误:
警告:目录/../definitionnCache/Serializer不可写,请在/Library/../DefinitionCache/Serializer.php第179行chmod到777
我用Finder编辑了文件,使其对每个人都可读和可编辑,但它不会更改。这是代码现在的样子:
/…/DefinitionCache/Serializer
是有效路径吗?“Serializer”应该是这样的是一个文件夹,而不是一个文件。一旦你修复了它应该可以工作的问题,只要你写入文件的内容是
$clean_html
。如果你仍然有问题,也许值得打开一个新的问题。我重新检查了文件,发现由于某种原因权限被放回。修复了它,不再有错误。但现在它没有改变此代码插入
警报(1);
还是因为它不能做任何坏事?
警报(1)
应该转义。将更新后的代码放到新问题中可能是值得的,但正如我前面所说的,请确保转义的变量是您随后写入文件的变量。谢谢代码。我不打算使用它,因为我想HTML净化器更好地阻止可能发生的大多数不好的事情。但我已经让您的代码正常工作了像这样:
$ersetzungen=array();$ersetzungen[2]='/]+\>/i';$ersetzungen[1]='/\n我100%同意那句话。我只是指出了你的代码中被破坏的部分。:)
<img src="http://www.google.com/logo.gif" onload="javascript:bad stuff here" />