安全的PHP密码输入可能吗?

时间:2016-01-03 19:58:04

标签: php security passwords

我一直在从头开始构建一个网站,虽然我有一些编码背景(特别是Python和C的各种风格),但我正在教我自己的html,php,sql等等。

我非常希望能够在我的网站上添加“管理员视图”,以便我可以更轻松地添加和修改内容。我已经花了很多时间来寻找一种安全地执行此操作的方法,隐藏在密码后面,但似乎这非常困难,甚至不可能。

由于我对互联网安全的工作原理不完全了解,唯一的办法是让登录php文件包含一个来自public_html文件夹外的php文件,该文件包含实际的密码条目,该条目本身必须包含随机生成的方式修改密码输入说明,以防止截获我输入的密码的任何人以后能够使用它,然后解密输入的密码并将其发送到包含管理视图基础结构的public_html文件夹之外的其他php文件

鉴于我已经使用了几个需要输入用户名/密码的网站,这些网站使用了一个更简单的方案来保护它们,我假设存在更好的系统。但是,任何充分确定的攻击者都可以看到来自客户端的所有信息的主要问题似乎使这变得不可能。我错过了什么?

2 个答案:

答案 0 :(得分:2)

  1. 这是最重要的一点:使用HTTPS。

  2. 在发送到服务器之前,您应该在javascript中使用密码哈希,并且只使用哈希值。这样,实际的密码就不容易获得。记得给哈希加盐。客户端的散列点是它掩盖了原始密码。 (许多用户在多个站点上使用相同的密码。这样原始密码很难获得)

  3. 这是SHA-256的一个很好的实现:http://www.movable-type.co.uk/scripts/sha256.html

    1. 在存储之前,再次在服务器端对其进行哈希处理,以防有人访问您的数据。不要忘记盐。

    2. 请记住,安全只是程度问题:c)

    3. 存储哈希的位置不太重要。只要确保外面无法使用它。 使用.httpaccess文件来限制访问。以下是一些示例:http://blog.dreamhosters.com/kbase/index.cgi?area=3083

答案 1 :(得分:2)

到目前为止,您是正确的,无法通过您自己的应用程序保护客户端和服务器之间的密码传输。如果攻击者可以进行ManInTheMiddle攻击,他可以做与客户端完全相同的攻击,或者可以在发送之前剥离试图加密或散列用户密码的JavaScript。

因此,您唯一能做的就是使用加密的SSL / HTTPS连接。大多数提供商都提供安装SSL证书,但这通常有点贵,有时只能在专业捆绑中使用。还有一些托管商可以免费提供。

SSL连接的加密有效,因为已存在共享密钥。浏览器将安装根证书列表,这些证书可用于设置加密连接。