我使用的是Apache,我在我的索引页(index.php)有一个login名和密码字段。 validation是用login.php页面进行的,然后如果我是authaurize,我可以到达下一页home.php。
我想要确保用httpsvalidation,但仅用于validation,所以我需要设置一个URL重写。
RewriteCond %{HTTPS} !on RewriteCond %{REQUEST_URI} ^/login.php RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,QSA,L]
我已经考虑过这个解决scheme,但它不起作用。 我可以在index.php上input我的凭据,然后使用httpsredirect到login.php,但我仍然需要完成login名和密码字段。
你有什么想法吗?
不要这样做!
您的凭证正在以未encryption的POST请求发送。 服务器获取该请求,并用configuration的redirect响应,而不是将请求传递给PHP。 你的客户端看到这个redirect,并且不会重新提交POST请求; 毕竟,它将POST请求发送到它应该发送它的地方,并得到一个非错误响应代码( 301 )。 它通过不包含凭据的新HTTPS通道发送GET请求; 他们需要重新input,因为你看到。
而不是你在做什么,像这样实现它:
https://地址,以便安全地提交凭据。 没有例外。 为了确保在代码中不会意外地出现exception,请阻止通过HTTP访问login表单,而不是redirect。
RewriteCond %{HTTPS} !on RewriteCond %{REQUEST_URI} ^/login\.php [NC] RewriteRule ^ - [F,L]