0

我是网站安全的新手,我需要建立一个注册和登录系统。我还没有使用 https,如何确保我的注册安全?

这是我的注册表单 index.php,我使用 ajax 将表单值传递给 create_account.php 。

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
function submitForm() {
    $.ajax({type:'POST', url: 'create_account.php', data:$('#ContactForm').serialize(), success: function(response) {
        $('#ContactForm').find('.form_result').html(response);
    }});

    return false;
}

</script>
<form id="ContactForm" onsubmit="return submitForm();" method="POST">
   <input type="text" name="fname" value=""/> 
   <input type="text" name="lname" value="" />
   <input type="text" name="email" value="" />
   <input type="text" name="vEmail" value="" /> 
   <input type="password" name="password" value="" />
   <input type="password" name="vPassword" value="" />
   <input type="submit" name="submit" value="Submit" onclick="password.value=sha256_hash(password.value)"/>
<div class="form_result"> 

我试过 onclick="password.value=sha256_hash(password.value)" 但它根本不起作用。现在我不确定攻击者如何获取从 index.php 发送到 create_account.php 的信息。是否可以散列(sha256/512)并用javascript加盐?在 create_account.php 中,我已经在做这种类型的安全性了。

如果不可能,我们如何设置https(我对ssl几乎一无所知)?

4

2 回答 2

10

我还没有使用 https,如何确保我的注册安全?

开始使用 HTTPS。任何其他方法都是疯狂的,并且不安全。

我试过 onclick="password.value=sha256_hash(password.value)" 但它根本不起作用。

发送散列密码对安全性的贡献很小。它将降低(虽然不是很大程度)攻击者发现用户正在使用的密码的风险(这将有助于保护回收密码的用户)但是如果他们在传输过程中嗅探它,那么他们仍然可以知道他们需要什么字符串发送到您的站点以该用户身份登录。

是否可以散列(sha256/512)并用javascript加盐?

可能的?是的。作为解决这个问题的方法有用吗?一点也不。

如果您想要安全,请获得 SSL 支持。

如果不可能,我们如何设置https(我对ssl几乎一无所知)?

基本方法是:

  1. 购买或生成证书(生成自己的证书会导致问题,因为它不会由普通用户的浏览器信任的人签名)
  2. 配置您的服务器以使用证书(您如何执行此操作取决于服务器,Google 是您的朋友,它可以找到类似这些说明在 Debian 系统上为 Apache HTTPD 设置 SSL 的内容)。
于 2013-03-06T22:29:01.150 回答
0

虽然我确信您可以在发送密码客户端之前对其进行加盐,但这在安全性方面对您没有多大帮助。是的,它将防止原始密码在传输过程中被窥探,但这也会将您的哈希盐暴露给任何有互联网连接的人,因此他们可以通过彩虹表窃取密码。假设您仍然选择这样做,您是否想在每次有人尝试登录时重新散列?您最好通过 SSL 证书进行设置。

至于设置 SSL,我很快 google 了一下,发现了这个. 如果您只是在测试自己,您应该可以生成自己的证书,但是如果您要进行生产,则需要从注册提供商(如威瑞信)购买证书。同样,您使用的任何托管服务提供商都可能会迫使您在测试期间使用购买的托管服务提供商。

同样,如果您使用的是共享托管服务提供商,您可能需要请他们帮忙安装您的证书。

于 2013-03-06T22:30:14.147 回答