阻止用户使用非apache重写的URL访问文件

时间:2011-04-29 05:40:56

标签: apache mod-rewrite url-rewriting security

可能是一个菜鸟问题,但我刚刚开始玩apache并且还没有找到准确的答案。

我正在使用网址重写大量设置网络应用,以显示不错的网址,例如[mywebsite.com/product/x],而不是[mywebsite.com/app/controllers/product.php?id=x]。

但是,我仍然可以通过输入网址[mywebsite.com/app/controllers/product.php?id=x]来访问所需的网页。我想让它变得不可能,即。如果他们这样做,将人们重定向到错误页面,并允许他们仅使用“重写”语法访问此页面。

最简单的方法是什么?你认为这是保护应用程序的必要措施吗?

2 个答案:

答案 0 :(得分:2)

在PHP文件中,检查$_SERVER['REQUEST_URI']并确保按照您希望的方式访问它。

没有理由认为这应该是一个安全问题。

答案 1 :(得分:0)

RewriteCond %{REDIRECT_URL} ! ^/app/controllers/product.php$
RewriteRule ^app/controllers/product.php$ /product/x [R,L]

RewriteRule ^product/(.*)$ /app/controllers/product.php?id=$1 [L]

第一条规则会将任何请求重定向到/app/controllers/product.php,而不会将REDIRECT_URL变量设置为清除网址。