2012-11-18 55 views
-1

你是否知道它會被稱爲要求用戶輸入分配的密碼才能查看您的網站?像這個網站,例如Click。我以爲它是.htaccess,但我不想保護任何目錄。我只想讓我的朋友能夠登錄到我的網站,而不必爲了安全問題而改變目錄名稱。如何要求密碼才能查看網站?

+3

該主題是如此之大......您可以通過多種方式來保護您的網站的密碼。顯然你想讓密碼超出用戶可用的源代碼。一種方法是檢查MySQL數據庫,但你需要清理你自己的輸入。 – ApplePie

+0

有一百種方法可以解決這個問題。最簡單的方法是使用基本身份驗證或摘要身份驗證。這些可以使用您選擇的服務器端語言完成,或者配置爲由您的服務器直接處理。 (順便提一句,'.htaccess'只是一個服務器配置文件)如果你想要一個基於web的表單,那麼你需要編寫特定的代碼來處理它。 – Brad

回答

0

它通常被稱爲「登錄系統」,它通常還需要一個用戶名(不是在你的例子中)。 .htaccess與它無關,它應該用PHP或任何其他腳本語言來完成。

登錄系統通常需要一些輸入驗證和數據庫技能。如果你不擁有它們,我強烈建議你學習一些關於PHP,XSS,Sql Injection,Mysql和PDO的知識。

2

Apache htaccess聽起來像你所需要的。你鏈接到的網站有一個定製的網站登錄,可以用PHP編寫或任何網站編碼。

是微不足道的配置Apache來做到這一點,雖然,首先用htpasswd命令密碼:

htpasswd -c .htpasswd dave 

然後把這個.htaccess文件中:

AuthUserFile /full/path/to/.htpasswd 
    AuthType Basic 
    AuthName "My Secret Folder" 
    Require valid-user 
+0

感謝大家的幫助。 Gezpage,我理解你的有關.htpasswd的說明,但是我將如何設置htpasswd -c .htpasswd dave?像這樣做必須在我的主機上完成,否則會與文件相關。 – Evylent

+0

假設您具有對Web服務器的控制檯訪問權限,請在您希望保存密碼文件的目錄中執行上面的htpasswd命令,然後在.htaccess文件中指定此位置,以便它將使用創建的.htpasswd中的登錄名/密碼文件,當你點擊網頁時。 – gezpage

0

通常這樣做與服務器端腳本和數據庫。 Javascript無法使用,因爲無論您對代碼進行了多少混淆,任何人都可以右鍵單擊並「查看源代碼」來查找您的密碼。我看到你標記的PHP。在PHP中,它相當簡單。使用提交的用戶名和密碼框設置HTML表單(通過POST,而不是GET !,否則密碼將顯示在瀏覽歷史記錄和url欄中)。一個例子形式是這樣的:

<html> 
    <body> 
    <form action="login.php" method="post"> 
     Enter your username: <input type="text" name="user" /> <br /> 
     Enter your password: <input type="text" name="pass" /> <br /> 
     <input type="submit" value="Login" /> 
    </form> 
    </body> 
    </html> 

然後在login.php中:

<?php 
     session_start(); 

     $db = mysqli_connect("server","db_user","db_pass","database_name"); 
     $stmt = $db -> prepare("SELECT pass FROM users WHERE username=?"); 
     $stmt -> bind_param("s",$_POST['user']); 
     $stmt -> execute(); 
     $stmt -> bind_result($result); 
     if ($_POST['pass']==$result) 
     { 
       $_SESSION['auth'] = "yes"; 
       header("Location: index.php"); 
     } 
     else 
     { 
       die("Authentication rejected!"); 
     } 
    ?> 

然後,所有你需要做的是發生在所有文件的頭部你想成爲下面的代碼「密碼保護「:

<?php 
     session_start(); 
     if (isset($_SESSION['auth'])) 
     { 
       if ($_SESSION['auth']!="yes") 
       { 
        header("Location: login.php"); 
       } 
     } 
     else 
     { 
       header("Location: login.php"); 
     } 
    ?> 

這是假設你有一個MySQL數據庫(免費,易於安裝)與一個名爲users表,以最小的包含用戶欄和密碼欄。它很容易找出這個代碼,這絕對不是唯一的方法來做到這一點!然而,這是一種體面的方式,因爲它包含基本的必需品(您可以在其他地方瞭解),如輸入衛生設施。

祝你好運!這確實是一個在計算機安全中非常重要的大問題。事實上,它提出了一個十億美元的問題:「我如何讓這些好人進入,但是讓壞人出去?」

+0

其他建議很好,可能比這更簡單。但是,這確實可以讓你的手變髒一點,而不是那麼多的工作。它總是善於自己做一些事情! (除非你重新發明輪子) –

+0

你不應該在數據庫中以明文存儲密碼 – Mike

+0

我將密碼存儲在Sha1中。另外,在我的主目錄中,我已經有了一個index.php和一個login.php。我將login.php更改爲inc.login.php,但是如何將它修復到顯示兩個索引的位置? – Evylent

相關問題