我前段時間建立了一個網站,其中包含一個公共區域和一個私人區域。私人區域通過包含敏感信息的相關目錄保護.htaccess密碼保護。.htaccess密碼保護破解
一切都被徹底的測試,並可以正常使用,直到在最近的過去一段時間,當它被吸引到了我的注意,該數據是免費提供給全世界沒有任何用戶名和密碼。這些數據不是核導彈的發射代碼,但它仍然是我想限制給授權用戶的機密數據。
我接觸的網絡託管公司,並已給出了兩個理由認爲,爲什麼密碼保護是行不通的。我發現很難接受他們的理由,因爲它曾經很完美。
他們首先聲稱我的.htaccess文件無效。因此他們創造了一個新的,但同樣沒有阻止訪問。我的原始.htaccess文件如下。
他們接下來聲稱這是因爲我的index.html文件包含的JavaScript。它調用了兩個JavaScript文件。第一個(下面)簡單地做了一個document.write對CSS文件的調用。第二個(下面)做了一個搜索表單的document.writes和下拉菜單。每個包含index.html的html文件都會調用這兩個腳本。
他們證明了他們的第一次診斷是錯誤的,當他們修改的.htaccess的版本並沒有幫助。 (這只是我的代碼的最後4行)。所以問題是.htaccess密碼保護可以簡單地通過包含一些簡單的JavaScript來寫入菜單到屏幕來打破,如果是的話,網站上的記錄是什麼?
可以想象的是,javascript可能會影響下拉菜單中項目的安全性,但建議生活在受保護目錄中的index.html本身應該突然變得無需密碼即可訪問,這完全不合邏輯,因爲它僅僅是因爲它包含寫出菜單的JavaScript。
這是我原來的.htaccess文件:
Options -Indexes
AddHandler x-httpd-php .html .htm
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>
<Files index.html>
AuthUserFile "/home/xxxxxxxx/.htpasswds/public_html/private/passwd"
AuthName "private"
</Files>
這是我的index.html的開始:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>xxxxxxxx Private Area</title>
<script type="text/javascript" src="header1.js"></script>
</head>
<body onload="document.searchbox.query.focus()">
<div class="page">
<script type="text/javascript" src="header2.js"></script>
這是header1.js:
document.write('<link href="../menus.css" rel="stylesheet" type="text/css" />');
document.write('<!--[if lt IE 7]>');
document.write('<style type="text/css" media="screen">');
document.write('body{behavior:url(csshover.htc);}');
document.write('</style>');
document.write('<![endif]-->');
這是header2.js的開始(一些線條被遮蔽以保護無辜者):
document.write(' <form action="sphider29/search.php" method="get" name="searchbox" target="_blank">');
document.write(' <table align="right">');
document.write(' <tr>');
document.write(' <td align="center">');
document.write(' <input type="text" name="query" id="query" size="25" value="" />');
document.write(' </td>');
document.write(' <td align="center">');
document.write(' <input type="hidden" name="search" value="1" />');
document.write(' <input type="submit" class="sbmt" value="Site Search" />');
document.write(' </tr>');
document.write(' </table>');
document.write(' <div align="center">');
document.write(' <input type="hidden" name="media_only" value="0" />');
document.write(' <input type="hidden" name="db" value="0" />');
document.write(' <input type="hidden" name="prefix" value="0" /> <br />');
document.write(' </div>');
document.write(' </form>');
document.write('<div style="position: absolute; left: 10px; top: 70px; width: 960px; height: 40px;">');
document.write('<ul class="menuH decor1">');
document.write(' <li style="margin-left:70px;"><a href="../">Home</a>');
document.write(' <li> <a class="parent">xxxxx</a>');
document.write(' <ul>');
document.write(' <li><a class="parent">xxxxxxxxx</a>');
document.write(' <ul>');
document.write(' <li><a href="xxxxxxxxxxxx.pdf" target="_blank">yyyy</a></li>');
document.write(' <li><a href="xxxxxxxxxxxxx.pdf" target="_blank">yyyy</a></li>');
document.write(' <li><a href="xxxxxxxxxx.pdf" target="_blank">yyyy</a></li>');
document.write(' <li><a href="xxxxxxxxxxx.pdf" target="_blank">yyyy</a></li>');
document.write(' <li><a href="xxxxxxxxxxxx.pdf" target="_blank">yyyy</a></li>');
如果問題是JavaScript,然後如果我擺脫它,並用PHP做這一切在PHP包括菜單代碼將是解決這個問題的?
我還沒有看到任何人使用document.write()的,因爲像1998年你可能要重新考慮如何你都這樣做。 –
您的託管公司正在騙你。得到一個更好的。 – SomeKittens
*所以問題是可以.htaccess的密碼保護是簡單地通過包括一些簡單的JavaScript,寫一個菜單到屏幕打破?* - **沒有**。 – jedwards