我想通过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文件的效果如何,是否可以阻止黑客访问数据库连接文件?
答案 0 :(得分:2)
没有什么是完全无懈可击的。无论如何,这远非如此。这是你缺乏的实施。首先加密它,然后将加密的消息与密钥一起存储在数据库中。
这就是解密它所需的全部内容。因此,任何SQL注入漏洞或服务器/数据库漏洞都可能危及加密消息并使其无效。不要将私钥存储在服务器上; 特别是没有它预期的消息。如果你这样做,它只不过是昂贵的明文。
甚至不要将数据库连接文件存储在Web根目录中。对于黑客来说,抓住这种方式是微不足道的,查找LFI。您可以将其存储在例如在/ var / www /中,从/ var / www / public /。
正如评论中所指出的,无论如何,你在这里做的事情有点奇怪。使用带有密码短语的SSH密钥可能会好得多。