簡體   English   中英

有沒有辦法在不使用服務器端語言的情況下密碼保護 HTML 頁面?

[英]Is there a way to password protect HTML pages without using a server side language?

我有一系列相互鏈接的網頁,我想通過要求用戶提供登錄名和密碼來限制對這些頁面的訪問。 但是,我的主機帳戶目前沒有為服務器端腳本提供任何工具 - 有什么方法可以僅使用客戶端腳本來實現此目標?

我想知道以下程序是如何工作的 -

http://www.myzips.com/software/HTML-Password.phtml

澄清:感謝您的投入。 但是,如果我正在配置 Web 服務器,那么用戶是否有可能輸入用戶名和密碼?

無法創建安全的客戶端腳本。 如果用戶有權訪問它,則它是不安全的。

如果您的主機正在運行 apache,您可以使用 .htaccess 來保護文件夾,在 IIS 上,您可以通過目錄安全來執行相同的操作。

以下是我自己實現的使用加密的此問題有效解決方案

這里的一些用戶建議使用基於加密的方法來保護客戶端密碼。 我也需要這個功能,所以我自己實現了。 密碼使用 PBKDF2 散列,然后使用 AES256 加密頁面。

該工具托管在這里:

https://www.maxlaumeister.com/pagecrypt/

此處提供源代碼:

https://github.com/MaxLaumeister/pagecrypt


項目描述,來自項目頁面:

PageCrypt - 密碼保護 HTML

此工具可讓您安全地密碼保護 HTML 文件。 與其他密碼保護工具不同,此工具:

  1. 沒有服務器端組件(此工具及其受密碼保護的頁面完全在 javascript 中運行)。

  2. 使用強加密,因此無法繞過密碼保護。

您只需選擇一個 HTML 文件和密碼,您的頁面就會受到密碼保護。

您可以使用以下內容創建文件 .htaccess:

AuthUserFile path/to/password.txt
AuthGroupFile /dev/null
AuthName "Acces Restreint"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>

然后您必須創建 .htpasswd 文件。

可以實現這一點,盡管您可能會發現簡單地切換到不同的托管服務提供商會更容易。 這是可能的:

首先,使用對稱加密算法和隨機密鑰(主密鑰)對整個主體進行加密。 將此密文作為文本存儲在 javascript 塊中。

對於所有用戶,生成一個 javascript 哈希,將他們的用戶名映射到主密鑰的加密副本(使用每個用戶密鑰加密)。

最后,創建一個要求用戶名和密碼的網頁。 輸入后,使用用戶名查找加密的主密鑰。 使用用戶輸入的密碼解密,並使用生成的主密鑰解鎖原始主體。 使用 javascript 將現有的 html 正文替換為解密后的正文。

我不知道客戶端腳本,但您可以使用 Web 服務器來限制對您網站的訪問。
在 IIS 中可以使用“目錄安全”選項卡設置:配置 IIS 網站身份驗證

如果每個人只有一個密碼,您可以嘗試一種公鑰類型的方法。 您可以提供一個簡單的腳本來執行 RSA 解密(您需要在可以訪問某種類型的編程軟件的地方進行原始加密)。 然后,您可以將內容作為加密字符串提供。 你會顯示一個密碼框,用戶輸入密碼,然后根據密碼解密字符串。 如果密碼正確,字符串將正確解密,並顯示頁面。 否則,頁面將看起來像一堆垃圾。 但是要小心,因為這種客戶端方法很容易受到蠻力攻擊。

當然,如果安全不是什么大問題。 從本質上講,您將放置一扇門,上面寫着“如果您不知道密碼,請不要進來”。 任何不使用服務器端技術的東西都可能使用 JavaScript,以及受保護目錄中的文件來存儲密碼。 然而,這不是密碼保護。 可以禁用 JavaScript,這將導致頁面加載。 毫無疑問,這將通過隱藏內容來解決……但內容仍然可以通過源查看。 還有其他一些方法,但如果您有真正值得用密碼保護的內容,這不是一個好方法。

是的,這是可能的,但它不是很漂亮,甚至不是很好。

  • 您的索引頁有一個空的 div,您的受限內容將在其中放置。
  • 在頁面加載或點擊鏈接時,提示 (window.prompt) 要求您輸入密碼。
  • 您的密碼被散列並與腳本中正確密碼的存儲散列(或散列數組)進行比較。
  • 如果您有匹配項,則通過 AJAX 將內容加載到 div 中
  • 您可以將密碼存儲在 cookie 中,這樣就不會每次都提示它(不是很安全,但這不是一個非常安全的系統)
  • 您仍然不是那么安全,因為您將加載的頁面的文件名將在您的腳本中可見,但這可能會使非常隨意的沖浪者望而卻步。
  • 您可以混淆 url,從而需要一些 JavaScript 知識才能查看。 例如 rot13

您將需要一個JavaScript 散列腳本

或者你可以使用一個神秘的 html 文件名作為密碼和 ajax 在 / 瀏覽到該頁面(如果存在):-)

與其他建議一樣安全(或不安全),但可能更容易實施。

為此,您不需要公鑰——實際上,公鑰解密僅限於加密其他對稱密鑰和證書,因為它在計算上非常昂貴。 你只需要一個共享的秘密。

使用 AES 加密網頁(例如),使用從密碼短語派生的密鑰(通過散列)。 然后,您必須將密碼安全地傳達給用戶並編寫一些 javascript 來下載加密內容、提示輸入密碼、解密數據並將其合並到 DOM 中。

它相當混亂而且非常脆弱——所有用戶只有一個密碼,一旦它受到威脅,你就必須更換服務器上的東西,並希望谷歌沒有緩存它......建議你轉向真正的 ISP

至於你所指的 HTML 密碼程序,沒有辦法知道它不是萬能的或壞的……“強算法的最佳安全性”這句話並不令人鼓舞!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM