查找空白注入PHP文件

时间:2012-09-13 22:28:02

标签: php regex bash grep

PHP文件中的空格有时会出现问题,因此我正在尝试查找符合常见问题标准的文件。我试图以递归方式找到所有具有以下一个或两个条件的文件:

1)不以<#字符开头。

并/或

2)不以>字符结尾,除非它以紧密括号结尾,后面跟着任意数量的换行符。

我认为第一个条件是:$[^<#]

我认为第二个条件是:[ [^>^] | [}\n*^]]

但请注意,在我的天真正则表达式中,$^表示文件的开头和结尾,而不是文件中的任何行。即使有了这些,假设它们是正确的,我将如何组合它们?像这样?

[$[^<#]] | [[ [^>^] | [}\n*^]]]

然后,将它们放入grep:

grep -r [$[^<#]] | [[ [^>^] | [}\n*^]]] *

显然,这不起作用(tm)。有人可以教我如何纠正错误吗?感谢。

这是一个很好的档案:

<?php

?>

这就是:

<?php
function someFunc(){
}


‏

这也很好:

#!/usr/bin/php -q
<?php
?>

领先的HTML很好:

<html>
<?php
echo '</html>';
?>

尾随HTML也很好:

<?php
echo '<html>';
?>
</html>

这很糟糕(领先换行):

‏
<?php

?>

这也很糟糕(领先空间):

‏ <?php

?>

这也很糟糕(尾随换行符):

<?php

?>
‏

1 个答案:

答案 0 :(得分:2)

快速地表达了一个表达,我觉得你想做什么。在这里已经很晚了,出于某种原因我正在使用stackoverflow。无论如何,我希望我的请求是正确的。

试试这个正则表达式/\A(?:\s+.*>|[^<#].*>\s*|<.*>\s+)\Z/s。在此解释:http://regex101.com/r/cT7eY5

我希望这有帮助。如果我以任何方式误解了你,请澄清,我会尝试调整表达。