如何找到所有使用php输入过滤器来完全禁用php过滤器模块的输入?


10

我想在大型网站上禁用PHP过滤器模块,但是遍历所有节点,块和其他可能使您可以使用php过滤器的字段将花费很多时间。

有没有一种简单的方法或方法,可以通过运行SQL查询来找出整个网站使用php过滤器的位置?

Answers:


9

无需重新发明轮子,只需安装Security Review模块,该模块具有以下检查:

内容中的PHP或Javascript(Drupal 7中的节点和注释以及字段)

对于块,您可以检查block_custom表中的format列。

困难的是Views-我尚未找到一种可靠的方式以编程方式在Views中定位恶意PHP。


1
我猜想如果安全审核人员不能为View添加可靠的检查,那可能就是不可能的下一步。
Mołot

@Mołot:只要找到一种方法来检索意见具有支持PHP,请参阅我的回答如下..这将是巨大的,知道它有任何缺点或边缘的情况下...
阿尼尔·萨格尔

1
我得到的只是“确定,不受信任的用户无权使用PHP输入格式。” -最新版本。当我在首页上使用php输入格式的代码块时,它让我感到绿色。您的答案目前似乎还很不真实。
Mołot

因此,据我所知...安全审查模块告诉您正在使用php过滤器...并不是确切地使用了哪些元素,在真正的安全审查中这将有所帮助。但是,这是一个很好的警告,需要进一步调查。
乡下人将军2014年


7

您可以通过在MySQL中运行以下命令来找到所有启用了php的视图...

SELECT vv.name , vd.display_options
FROM views_display AS vd
LEFT JOIN views_view AS vv ON vv.vid = vd.vid
WHERE vd.display_options REGEXP '.s:[3]+:"php".*'

views_display表以序列化格式存储此信息。...我已经测试了上述查询的预期效果。.希望它有助于解决视图PHP谜语:-)


1
看起来不错。需要测试一下。在此期间,我自由进行了编辑,并清理了编写查询的方式(当然,不涉及逻辑,名称等)。
Mołot

谢谢:-)我只是确认,我可以看到的观点已经php的..让我们希望它为OP太..
阿尼尔·萨格尔

1
这并不适用于所有视图(例如,在代码中定义的视图),并且该正则表达式很容易产生误报…虽然比我想的要好得多:)
Clive

使用phpmyadmin,您可以非常轻松地搜索所有表的所有列,搜索php并手动浏览结果。
rooby

0

仅当视图保存在数据库中时,以上Anil Sagar的代码才有效。如果视图仅在代码中,则将无法使用。因此,我写了一个小片段来运行以将所有视图保存到数据库。然后,我可以使用MySQL代码段显示php。

  $views = views_get_all_views();
  foreach ($views as $view) {
    if (empty($view->disabled)) {
      $view->save();
      drupal_set_message('view saved: ' . check_plain($view->name));
    }
  }

0

旧问题,但首先出现在我的Google搜索中。

有一个Contrib模块可以找到所有PHP条目:

PHP查找器

“ PHP Finder”模块用于查找在节点,块或视图中使用PHP过滤器格式的位置。


规则中使用的PHP呢?
Pierre.Vriens
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.