2014-01-18 154 views
0

我前段時間建立了一個網站,其中包含一個公共區域和一個私人區域。私人區域通過包含敏感​​信息的相關目錄保護.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包括菜單代碼將是解決這個問題的?

+0

我還沒有看到任何人使用document.write()的,因爲像1998年你可能要重新考慮如何你都這樣做。 –

+0

您的託管公司正在騙你。得到一個更好的。 – SomeKittens

+0

*所以問題是可以.htaccess的密碼保護是簡單地通過包括一些簡單的JavaScript,寫一個菜單到屏幕打破?* - **沒有**。 – jedwards

回答

0

根據託管公司,我的代碼很好。這是其他一些文件,他們沒有完全解釋是造成這個問題。