这个登录会安全吗?

8 浏览
0 Comments

这个登录会安全吗?

这是我第一次做这个。我已经阅读了《网站认证的权威指南》和《PHP编程/用户登录系统》,但我仍然对我是否做得正确有所疑问。请注意:我做这个是为了学习,所以请不要建议使用框架、php pear auth或其他相关类。我只想得到一些改进的指导意见。

我不需要CIA级别的安全性,只需要一个基本的登录网站:

无论如何,这是我的登录流程:

  1. 等待用户点击登录按钮

    if (isset($_POST['action']) && $_POST['action'] == 'Login')

  2. 检查表单令牌是否与会话中存储的令牌匹配,如果不匹配则退出。
  3. 使用php过滤器验证用户名和密码的字符串
  4. 对密码进行散列(使用sha256散列算法)(使用相同的盐对每个密码进行散列)
  5. 使用mysqli检查用户名和散列密码(在SQL中使用LIMIT 1)。
  6. 如果没有找到匹配项,则显示错误--否则设置会话(使用sha256散列)

最后,我放置了以下代码,这是我最担心的一行:

我的想法是,如果会话没有设置,则显示登录表单并退出。

 if
 (!isset($_SESSION['authenticated'])) {
     require_once 'html/login_form.html';  
     exit();   }
 // secret stuff goes here

完整的代码可以在这里找到。它还不完整。

我还将尝试实现这个: 如何在PHP中限制用户登录尝试

我对任何反馈表示感谢。

0
0 Comments

在上述内容中,提到了一些方法来增强登录的安全性。然而,没有任何方法能够百分之百地保证安全。为了解决这个问题,下面将详细介绍原因和解决方法。

首先,需要明确的是,没有任何方法能够保证登录的绝对安全性。但是我们可以采取一些措施来增强登录的安全性。下面是一些可以采取的方法:

1. 挑战响应验证(Challenge Response):通过在登录过程中向用户发送一个随机的挑战,并要求用户提供正确的响应来验证用户的身份。这种方法可以有效防止中间人攻击。

2. 三次握手协议(Three Pass Protocol):利用一种安全的协议来进行用户身份验证。该协议通过三次通信来确保登录的安全性。

3. 对用户名和密码进行哈希处理:使用哈希函数对用户名、密码和盐值进行组合,并对其进行哈希处理。这可以防止黑客通过猜测密码或使用彩虹表等方式进行密码破解。

4. 在客户端使用JavaScript进行验证,并在服务器端再次进行验证:在登录页面上使用JavaScript对用户输入的信息进行验证,然后再将验证结果发送到服务器进行二次验证。这样可以减少恶意用户对服务器的攻击。

5. 使用数据库抽象库来防止SQL注入攻击:使用数据库抽象库可以防止恶意用户通过注入恶意代码来攻击数据库。

当然,还有很多其他的方法可以用来增强登录的安全性,但具体要使用哪些方法取决于你的应用程序需要多大的安全性以及对用户的影响有多大。在平衡安全性和用户体验之间需要有所取舍。

举个例子,我的经纪账户在登录之前需要进行图片验证和挑战验证,这虽然繁琐,但确保了账户的安全性。而对于一个博客来说,这样的验证可能就不是那么必要了。

登录的安全性是一个重要的问题,需要采取一些措施来增强其安全性。然而,我们也需要在安全性和用户体验之间进行权衡,以确保登录过程既安全又便捷。

0
0 Comments

这个问题的出现原因是担心登录是否安全,可能是因为以下几个原因:

1. 使用相同的盐值(salt)会导致所有的哈希值都被泄露。

2. 忘记防止SQL注入攻击。

3. 对于密码加密,应该使用单向加密算法,而不是可逆解密的算法。

解决方法是:

1. 不要使用相同的盐值,这样即使盐值泄露也不会导致所有的哈希值被破解。

2. 应该防止SQL注入攻击,可以使用mysql_real_escape_string()函数或者mysqli_real_escape_string()函数来过滤输入的数据。

3. 对于密码加密,应该使用单向加密算法,例如使用哈希函数对密码进行加密。

虽然filter_input函数和mysqli_real_escape_string函数可能看起来有些冗余,但是它们可以提供额外的安全保护。如果其中一个部分存在漏洞,另一个部分仍然可以提供保护。

为了确保登录的安全性,应该遵循上述建议来进行相应的改进。

0