【问题标题】:.htaccess password protection broken.htaccess 密码保护已损坏
【发布时间】:2014-01-18 21:52:15
【问题描述】:

我前段时间建立了一个网站,其中包含一个公共区域和一个私人区域。私人区域在包含敏感信息的相关目录上使用 .htaccess 密码保护。

一切都经过了彻底的测试并且运行良好,直到最近的某个时候,我注意到数据可以免费提供给全世界,无需任何用户名和密码。这些数据不是核导弹的发射代码,但它仍然是我希望仅限授权用户使用的机密数据。

我联系了网络托管公司,并得到了关于密码保护不起作用的两个假设原因。我很难接受他们的理由,因为它曾经完美地工作过。

他们首先声称我的 .htaccess 文件无效。因此,他们创建了一个新的,但它同样没有阻止访问。我原来的 .htaccess 文件在下面。

他们接下来声称这是因为我的 index.html 文件包含 javascript。它调用了两个 javascript 文件。第一个(如下)只是简单地对 CSS 文件的调用进行了 document.write。第二个(下)做了一个搜索表单和下拉菜单的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 来完成这一切,是否可以解决问题?

【问题讨论】:

  • 自 1998 年以来,我还没有看到任何人使用 document.write()。您可能需要重新考虑一下您是如何做到这一切的。
  • 您的托管公司在骗您。得到一个更好的。
  • 所以问题是 .htaccess 密码保护是否可以通过包含一些将菜单写入屏幕的琐碎 javascript 来破坏? -- .
  • 有点跑题了,但是你为什么需要这两个 JavaScript 文件呢?它们看起来完全没用。
  • 暴露的数据是什么?这些 pdf 文件是否应该无法访问?

标签: javascript php apache .htaccess


【解决方案1】:

根据托管公司的说法,我的代码很好。是他们没有完全解释导致问题的某个其他文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 2022-01-08
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多