密码使用css / html保护网页?

时间:2012-02-21 16:43:56

标签: html css web passwords

我已经看到了几个关于密码保护页面的问题,但它们似乎都不是我正在寻找的。 JavaScript或Apache等不是我目前能够考虑的选项。我也没有能力下载产品或购买产品,因为这不适合我而是我老板的网站,所以请不要这样的建议。

该网站目前使用CSS和HTML编写,不幸的是,这也是我的编码知识的范围。我看到人们使用PHP编码的一些地方,但每次我尝试我只是得到一个空白页面或它没有正常工作,或者当我输入密码时什么都不会发生。也没有任何真正的好关于它的详细说明,所以我永远不知道我应该把PHP代码放在哪里(它是在自己的页面上还是集成?)或者如何将它连接到实际的网页。

说实话,它并不一定非常棒,因为很多将要关注这个网站的人都是不太懂电脑的人,只是一个带有密码字段的简单表格框。如果有一个代码可以直接放到页面上的HTML中,那将是最好的。如果我必须创建一个单独的HTML页面,我也不介意这样做。将有一个密码提供给销售人员,以便他们可以在他们的笔记本电脑或平板电脑的路上访问私人页面。

我看到了一些关于.htpassword和另一个我无法记住的事情,但我无法找到任何一步一步的指示或有关它的详细信息(我能理解的详细含义信息......)。我也看到了关于password_protect.php的事情,但是我认为这需要一个用户名字段,而我真的不能使用这样的字段。不会有用户名,遗憾的是,要求销售人员过多地记住两件事。

无论如何,我为我对这个问题的无知感到抱歉,并感谢任何人提前给予他们的帮助!

6 个答案:

答案 0 :(得分:6)

css或html(甚至是javascript)中的任何密码逻辑都将无用,因为所有这些“代码”都会下载到客户端。您需要在服务器端完成密码检查。

答案 1 :(得分:6)

  

密码使用css / html保护网页?

......是不可能的。一种是表示语言,一种是文档标记语言。

  

我从来不知道我应该把PHP代码放在哪里(它是在自己的页面上还是集成在一起?)或者如何将它连接到实际的网页。

PHP是一种编程/模板语言。典型的用法是将PHP代码嵌入HTML文档中。

在WWW的上下文中,它是一种服务器端编程语言。 Web服务器负责通过PHP解释器运行PHP程序并将输出发送到客户端(而不是发送原始文件)。

  

我看到了一些关于.htpassword

的内容

这是与Apache内置密码系统一起使用的密码文件的通用文件名。

如果您只想要一个简单的密码系统,那么您应该查看Web服务器的手册。

答案 2 :(得分:3)

您可以创建.htpassword文件并将其上传到服务器的非公共部分。其内容应如下所示:

user1:password
user2:secondpassword
user3:thirdpassword

您可以使用下面的简单脚本创建这些加密密码。

<?php
if (!empty($_POST[password]) AND !empty($_POST[user])) {
  $user = $_POST[user]; 
  $password = $_POST[password]; 
  $encryptedPassword = crypt($password);
}
$script = $_SERVER['SCRIPT_NAME'];
echo "<html><head><title>Password Encryption</title></head><body>
<form method=post action='$script'>
<font size=5><b>.htpasswd File Password Encryption</b></font>
<br><br>Enter Username<br>
<input name=user value='$user' size=20>
<br><br>Enter Password<br>
<input name=password value='$password' size=20>
<br><br><input type=submit name=submit value='Encrypt Now'>
";
if (!empty($user) AND !empty($encryptedPassword)) {
  echo "<br><br>.htpasswd File Code<br>$user:$encryptedPassword<br>
}
echo "</form></body></html>";
?>

这里可以看到加密密码的一个例子(请注意,fullstops是加密的一部分,换行符将用户分开):

user1:$1$XrC3d0Bq$.fiItuFi.cWvCZamQi2x8.
user2:$1$4AKaALkW$6WNz7zDKveBuAy.6ORFi5.
user3:$1$5HttySKH$MktpH3lQ0OkeUclHfuBKF1

然后在您要保护的目录中,在.htaccess文件中包含以下代码和服务器上.htpassword文件的链接

AuthName "Restricted Area" 
AuthType Basic 
AuthUserFile /pathtofileonyourserver/.htpasswd 
AuthGroupFile /dev/null 
require valid-user

答案 3 :(得分:3)

如果您添加了javascript,通过一些预处理 可以安全地密码保护页面,则无需进行服务器端验证。

使用AES(这是预处理)等对称密钥算法加密您的内容,将其置于联机状态并使用javascript通过用户提供的密码解密该内容。

然后,一切都可以在浏览器中的客户端发生。如果代码是开放的,每个人都可以看到无关紧要。

的伪代码:

<input type="password" id="password">
<button class="decrypt">Decrypt</button>
<script>
    var myEncryptedPage = '<html-string-pre-encrypted-with-your-password>';
    $('.decrypt').click(function(){
        var password = $('#password').val();
        // 'decrypt' tries to decrypt your string with the user provided password
        document.write(decrypt(myEncryptedPage, password));
    });
</script>

如果您想查看可能的实现,我可以使用crypto-js库编写一个简单的PoC来显示该想法(StatiCrypt),您可以在其中进行预处理并使用密码加密您的页面提示。

答案 4 :(得分:2)

没有。仅使用HTML就不安全。

答案 5 :(得分:0)

根据Daniel的回答,HTML和CSS只能用于创建静态内容,这意味着页面上的内容无法更改。要求输入密码,对某些数据库进行检查以及允许/拒绝访问的输入表单都涉及到动态的事情,这些事情不能仅通过这两个来实现。至少需要javascript,即使这样也不会很安全。