【发布时间】:2018-01-21 21:03:35
【问题描述】:
我想通过 PHP 连接到 ssh。我可以轻松做到这一点,但问题是登录详细信息(用户名、密码)的完整性。当我第一次尝试代码时,我将我的用户名和密码存储在了显而易见的地方。我考虑过加密这些变量。通过查看我发现的其他问题libsodium:https://github.com/jedisct1/libsodium-php
我正在使用他们的第一个加密字符串的示例:
$secret_key = sodium_crypto_secretbox_keygen();
$message = 'Sensitive information';
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$encrypted_message = sodium_crypto_secretbox($message, $nonce, $secret_key);
Decryption:
$decrypted_message = sodium_crypto_secretbox_open($encrypted_message, $nonce, $secret_key);
通过查看示例,您可以看到$encrypted_message、$secret_key、$nonce。我在加密登录详细信息时将这些变量插入到数据库中,然后在需要时在解密代码中获取它们。
我还将我的数据库连接脚本 (PDO) 存储在一个文件夹中,其中有一个包含以下内容的 .htaccess 文件:
order deny,allow
deny from all
allow from 127.0.0.1
1. 我的方法安全且防黑客攻击吗?
2. 如果有人破坏了我的数据库,他们可以使用我的用户数据吗?
3. .htaccess 文件的效果如何,能否阻止黑客访问数据库连接文件?
【问题讨论】:
-
这应该发布在代码审查中
-
为什么要加密细节?这是没有意义的。如果您的服务器遭到破坏,那么攻击者将拥有获取明文用户名和密码所需的一切。
-
我从未尝试过使用 php 打开 ssh 连接,但我建议使用公钥/私钥对而不是密码来进行 ssh 连接。存储加密密码似乎是个非常糟糕的主意。
-
@LukeJoshuaPark 好吧,如果访问源代码/资源和数据本身存在差异,那么加密可能需要攻击者首先访问源代码。否则你是对的:这将是简单的混淆,而不是真正的加密。
标签: php encryption libsodium