Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-加密安全问题(我易受攻击吗?)_Php_Encryption_Libsodium - Fatal编程技术网

PHP-加密安全问题(我易受攻击吗?)

PHP-加密安全问题(我易受攻击吗?),php,encryption,libsodium,Php,Encryption,Libsodium,我想通过PHP连接到ssh。我可以轻松做到这一点,但问题是登录详细信息(用户名、密码)的完整性。当我第一次尝试该代码时,我将用户名和密码存储在清晰可见的地方。我考虑过加密这些变量。通过查看其他问题,我发现libnail: 我正在使用他们加密字符串的第一个示例: $secret_key = sodium_crypto_secretbox_keygen(); $message = 'Sensitive information'; $nonce = random_bytes(SODIUM_CRYPT

我想通过PHP连接到ssh。我可以轻松做到这一点,但问题是登录详细信息(用户名、密码)的完整性。当我第一次尝试该代码时,我将用户名和密码存储在清晰可见的地方。我考虑过加密这些变量。通过查看其他问题,我发现
libnail

我正在使用他们加密字符串的第一个示例:

$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\u message
$secret\u key
$nonce
。在加密登录详细信息时,我将这些变量插入数据库,然后在解密代码中需要时获取它们

我还将数据库连接脚本(
PDO
)存储在一个文件夹中,该文件夹中有一个
.htaccess
文件,其中包含以下内容:

order deny,allow
deny from all
allow from 127.0.0.1
1.我的方法安全且防黑客吗

2.如果有人破坏了我的数据库,他们能使用我用户的数据吗

3.该.htaccess文件有多有效?它能阻止黑客访问数据库连接文件吗

  • 没有什么是完全防弹的。无论如何,这是远远不够的。这是您的实现所缺少的。首先对其进行加密,然后将加密的消息与密钥一起存储在数据库中

  • 这就是解密它所需要的全部。因此,任何SQL注入缺陷或服务器/数据库漏洞都可能破坏加密消息,使其变得无用。不要将私钥存储在服务器上尤其是与预期信息不符。如果你那样做的话,它只不过是昂贵的明文

  • 甚至不要将数据库连接文件存储在web根目录中。对于一个黑客来说,通过这种方式抓取是微不足道的,请查看LFI。您可以将其存储在外部,例如/var/www/中,并从/var/www/public/为index.php提供服务

  • 正如评论中提到的,你在这里做的事情有点奇怪。使用SSH密钥和密码可能会更好

  • 没有什么是完全防弹的。无论如何,这是远远不够的。这是您的实现所缺少的。首先对其进行加密,然后将加密的消息与密钥一起存储在数据库中

  • 这就是解密它所需要的全部。因此,任何SQL注入缺陷或服务器/数据库漏洞都可能破坏加密消息,使其变得无用。不要将私钥存储在服务器上尤其是与预期信息不符。如果你那样做的话,它只不过是昂贵的明文

  • 甚至不要将数据库连接文件存储在web根目录中。对于一个黑客来说,通过这种方式抓取是微不足道的,请查看LFI。您可以将其存储在外部,例如/var/www/中,并从/var/www/public/为index.php提供服务


  • 正如评论中提到的,你在这里做的事情有点奇怪。您最好使用带有密码短语的SSH密钥。

    这应该在代码审阅中发布。您为什么要加密详细信息?这是毫无意义的。如果您的服务器被破坏,那么攻击者将拥有获取明文用户名和密码所需的一切。我从未尝试使用php打开ssh连接,但我建议ssh连接使用公钥/私钥对,而不是密码。存储加密密码似乎是一个非常糟糕的主意。您是否尝试过@LukeJoshuaPark,如果在访问源代码/资源和数据本身时存在差异,则加密可能需要攻击者首先访问源代码。否则你是对的:这将是简单的模糊处理,而不是真正的加密。这应该在代码审查中公布。你为什么要加密细节?这是毫无意义的。如果您的服务器被破坏,那么攻击者将拥有获取明文用户名和密码所需的一切。我从未尝试使用php打开ssh连接,但我建议ssh连接使用公钥/私钥对,而不是密码。存储加密密码似乎是一个非常糟糕的主意。您是否尝试过@LukeJoshuaPark,如果在访问源代码/资源和数据本身时存在差异,则加密可能需要攻击者首先访问源代码。否则你是对的:这将是简单的模糊处理,而不是真正的加密。谢谢你的解释。我只想知道一种安全的方法来存储加密的消息。它们不是密码,只是随机数字和字母,类似于密码,但只有在验证其真实性的情况下才能提取。例如,我想在数据库中存储paysafecard代码(16个随机数),然后检索它们,并在尝试提取存储在它们上的金额时手动检查这些代码是否有效。谢谢您的解释。我只想知道一种安全的方法来存储加密的消息。它们不是密码,只是随机数字和字母,类似于密码,但只有在验证其真实性的情况下才能提取。例如,我想将paysafecard代码(16个随机数)存储在数据库中,然后检索它们,并在尝试提取存储在它们上的金额时手动检查这些代码是否有效。