这有效;我没有遇到麻烦,但我想确保这是万无一失的。
我想出了一个巧妙的小.htaccess
重定向,但我不确定它是否安全;你知道吗?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^goto/([a-z]+)/?$ /$1/ [R]
</IfModule>
我认为,只要服务器配置正确,文件自主处理身份验证,那么这应该不是一个安全问题。此外,由于重写规则仅适用于字符 az 和一个斜杠,我怀疑他们能否通过在 URL 中注入内容来跳转目录……
答案1
由于 [R] 标志,它实际上已毫无意义。
因为你发送的是外部的重定向意味着安全性会一直持续到服务器收到重写的 URL 为止。此时,就像有人从您计算机上的键盘记录器中窃取了 URL 一样。服务器应该通过新请求将重写的 URL 视为从未发生过重写。
答案2
.htaccess 重定向本身确实是“安全的”(除非在 mod_rewrite 或 mod_rewrite 相关的 Apache 代码中发现严重的可远程利用的错误)。
让我们看一个示例请求:
- Apache(mod_rewrite)检查规则是否匹配
- 如果确实如此:Apache 除了向浏览器发送重定向标头外,不会执行任何其他操作
- 如果没有:Apache 将像处理其他请求一样处理该请求(即开始寻找匹配的文件,...)
我能想到的唯一问题是以某种方式将访问者重定向到他/她不希望看到的文件。例如,如果允许 Apache“跟随符号链接”,并且重写规则指向符号链接,例如您的 /etc/passwd,那么 Apache 将按照指示行事并将您的 /etc/passwd 发送到浏览器。但这并不是 .htaccess 重定向的真正安全问题。