RewriteRule .htaccess允许所有字符

时间:2013-08-21 10:33:56

标签: .htaccess

RewriteRule我有.htaccess,我想允许网址中的所有字符。

我通过PHP过滤掉任何不良字符

我目前的代码是

RewriteRule ^([a-zA-Z0-9\-]+)\.php$ file.php?key=$1 [L]

我尝试将其更改为

RewriteRule ^(.*)\.php$ file.php?key=$1 [L]

允许所有内容通过但不起作用。我不想在.htaccess只过滤PHP。即使我在PHP中过滤掉它们,是否存在允许所有字符的安全风险?

2 个答案:

答案 0 :(得分:1)

您可能想要在重定向之前检查文件是否存在,这样您就不会陷入无限循环:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.php$ file.php?key=$1 [L]

第一行验证文件是否存在,如果它不存在则重定向。

您已经拥有它的第二行将重定向,anything.php改为file.php?key=anything,否则file.php会将自身重定向到file.php一遍又一遍。

是的,只要您在使用之前使用PHP代码正确清理信息,就可以在URL上允许任何内容。

答案 1 :(得分:0)

  

即使我在PHP中过滤掉它们,是否存在允许所有字符的安全风险?

是的,有人看到这个问题: https://security.stackexchange.com/questions/11234/how-does-hacking-work

这取决于您的应用程序,但.htaccess可用作安全机制。