我并不习惯PHP,但我必须在PHP中使用快速功能。我使用的是一封可以访问API的电子邮件。电子邮件必须包含在所有API调用中。电子邮件以加密方式存储在数据库中。如何最好地存储和使用此电子邮件地址?目前我在想这个。
getEmail
{
//Retrieve value from DB
//decrypt using openssl_decrypt
return decrypted value
}
function1
{
$email = getEmail();
API call 1
}
function2
{
$email = getEmail();
API call 2
}
我关心这个设计的事情是我必须多次检索和解密(随着更多功能的添加会变得更糟)。我的问题是openssl_decrypt的速度有多快?我可以安全地忽略对呼叫数量的担忧吗?或者将电子邮件存储在_Session safe中?还有其他方法吗?请帮我。我必须快速设计并保证安全。
答案 0 :(得分:4)
在您确定要尝试减轻的威胁之前,甚至不要开始考虑加密。
没有一个通用的答案,这是在你必须有多安全以及你能承受多少不便/费用之间的权衡。
使对称加密变得有价值需要坚如磐石的密钥存储。一旦您的密钥被泄露给攻击者,数据就会被视为已泄露。
最极端的是,密钥保存在自定义加密硬件上以控制访问。稍微不那么安全的是将密钥存储在可移动介质上并在引导期间将其直接复制到内存中。
在光谱的另一端,您可以将密钥存储在执行en / decrypting的盒子的HDD上。后者没有提供真正的安全性,因为任何服务器泄露都可能导致数据泄露。唯一的好处是阻止只能访问Db的用户查看数据。
如果您可以准确说明您想要保护的人/事,我们或许可以提供更有针对性的答案。
假设您可以拆分读/写,一种可能的替代方法是使用非对称加密。这样,您可以阻止服务器读取它已写入的数据。
*
*
这样做的好处是,破坏Web服务器不会泄漏有关系统中已有的电子邮件地址的详细信息,但是,它确实要求必须从Web服务器中隔离任何需要读取数据的代码。
*
这是一个非常复杂的过程,可以正确完成。根据您需要保证的数据,您需要至少执行以下操作:
请注意,随着消息长度的增加,非对称加密会很快非常。出于这个原因,通常对称地加密数据,然后非对称地共享密钥。这样,消息大小是恒定的,可以选择合适的密钥大小。
上述任何错误都可能会使您的数据暴露在风险之中。如果您关心安全性, 不会自行尝试。找一个能为您完成所有工作的好图书馆。选择已经存在很长时间且经过多次审核的东西。这样就有可能获得安全。