我正在使用.htaccess mod_rewrite
转换一个不错的网址,并使用php变量page
将网址部分发送到index.php
,其余的处理完成。< / p>
RewriteRule ^([a-zA-Z0-9-_/]+)$ index.php?page=$1 [QSA,L]
现在,如果某个恶意用户通过查询字符串传递page
变量,它就会被接受。例如,如果用户调用http://mysite.com/login?page=registration
而不是加载login
页面,则会加载用户指定的registration
页面。
知道如何在htaccess
文件中修复它吗?
答案 0 :(得分:4)
我自己也在寻找相同的答案,我很确定没有解决方法。我提出的唯一解决方案是将page
替换为一些任意“密钥”,例如98198bs129387b13
。因此,他们必须知道关键。但不要搞错,这是通过默默无闻的安全......并且在index.php中进行适当的检查仍然是必要的(而且无论如何)。
答案 1 :(得分:0)
如果用户调用http://mysite.com/login?page=registration而不是加载登录页面,则会加载用户指定的注册页面。
你无法使用mod_rewrite解决这个问题 - 毕竟,什么阻止攻击者进入
domain.com/registration
代替?
您需要确保未经授权的用户永远不会访问他们不应访问的网页。