RewriteRule
我有.htaccess
,我想允许网址中的所有字符。
我通过PHP过滤掉任何不良字符
我目前的代码是
RewriteRule ^([a-zA-Z0-9\-]+)\.php$ file.php?key=$1 [L]
我尝试将其更改为
RewriteRule ^(.*)\.php$ file.php?key=$1 [L]
允许所有内容通过但不起作用。我不想在.htaccess只过滤PHP。即使我在PHP中过滤掉它们,是否存在允许所有字符的安全风险?
答案 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可用作安全机制。