PHP - 加密安全问题(我易受攻击吗?)
PHP - Encryption security concern (Am I vulnerable?)
我想通过 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文件的效果如何,能否阻止黑客访问数据库连接文件?
没有什么是完全防弹的。无论如何,这远非如此。缺少的是您的实施。首先加密它,然后将加密的消息与密钥一起存储在数据库中。
这就是解密所需的全部内容。因此,任何 SQL 注入缺陷或 server/database 漏洞都可能危及加密消息并使其无法使用。不要将私钥存储在服务器上; 尤其是 不符合预期的信息。如果你那样做,那只不过是昂贵的明文。
甚至不要将数据库连接文件存储在网络根目录中。黑客以这种方式获取是微不足道的,查找 LFI。您可以将其存放在室外,例如在 /var/www/ 中并从 /var/www/public/.
为您的 index.php 提供服务
如评论中所述,无论如何,您在这里所做的事情有点奇怪。使用带有密码短语的 SSH 密钥可能会更好。
我想通过 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文件的效果如何,能否阻止黑客访问数据库连接文件?
没有什么是完全防弹的。无论如何,这远非如此。缺少的是您的实施。首先加密它,然后将加密的消息与密钥一起存储在数据库中。
这就是解密所需的全部内容。因此,任何 SQL 注入缺陷或 server/database 漏洞都可能危及加密消息并使其无法使用。不要将私钥存储在服务器上; 尤其是 不符合预期的信息。如果你那样做,那只不过是昂贵的明文。
甚至不要将数据库连接文件存储在网络根目录中。黑客以这种方式获取是微不足道的,查找 LFI。您可以将其存放在室外,例如在 /var/www/ 中并从 /var/www/public/.
为您的 index.php 提供服务
如评论中所述,无论如何,您在这里所做的事情有点奇怪。使用带有密码短语的 SSH 密钥可能会更好。