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