को बल दें मैं सोच रहा हूं कि HTTPS प्रमाणीकरण को बल देने का सबसे अच्छा तरीका क्या है।निर्देशिका पर HTTPS को कैसे बल दें और HTTPS प्रमाणीकरण
जब मैं अपने .htaccess फाइल में इस है:
AuthType Basic
AuthName "Developer"
AuthUserFile /usr/local/etc/apache22/passwords/passwords
Require user david
प्रमाणीकरण काम करता है, लेकिन यह पोर्ट 80 पर प्रमाणित करता है, स्पष्ट में पासवर्ड भेज दिया।
तो मैं मैं बराबर HTTPS अनुरोध करने के लिए सभी गैर HTTPS अनुरोध रीडायरेक्ट करने के लिए रीडायरेक्ट नियम जोड़ना होगा लगा:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteBase /~david/
RewriteRule ^(.*)$ https://myserver.tld/~david/$1 [R,L]
यह भी काम करता है, लेकिन पोर्ट 80 पर यह पहली authenicates, तो पुनर्निर्देश, उसके बाद फिर से authenicates पोर्ट 443 पर। मैं पोर्ट 80 पर प्रमाणीकरण नहीं करना चाहता, क्योंकि पासवर्ड स्पष्ट पाठ में भेजा जाएगा। मैं तुरंत HTTPS पर रीडायरेक्ट करने के लिए एक अच्छा तरीका समझने में सक्षम नहीं हूं, और फिर स्वाभाविक रूप से।
<?php
header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
?>
यह वह जगह है: अपने सर्वर की/पर
AuthType Basic
AuthName "Developer"
AuthUserFile /usr/local/etc/apache22/passwords/passwords
Require user david
ErrorDocument 403 /403.php
SSLRequireSSL
और एक 403.php PHP स्क्रिप्ट होने:
एक ही रास्ता मैं ऐसा करने के तरीके समझ सकता है ऐसा करने से है वांछित व्यवहार। इसे एसएसएल की आवश्यकता है, इसलिए जब आप पोर्ट 80 पर निर्देशिका तक पहुंचने का प्रयास करते हैं, तो यह एक कस्टम त्रुटि दस्तावेज़ थूकता है, और वह दस्तावेज़ पृष्ठ को HTTPS पर रीडायरेक्ट करने के लिए करता है।
यह एक क्लज की तरह लगता है। क्या इसे पूरा करने का कोई बेहतर तरीका है?
मुझे लगता है कि आपको यह सही मिला है। यह सबसे अच्छा तरीका है। – bmb