我从
PHP脚本管理MysqL数据库.
通过SSL保护服务器和客户端之间的通信.
我存储敏感的用户帐户数据.
通过SSL保护服务器和客户端之间的通信.
我存储敏感的用户帐户数据.
有没有办法在输入数据库时加密这些数据?
保护敏感数据的最佳方法是什么?
编辑:我正在使用CRON作业来更新依赖此密码登录用户帐户的数据.
所以我需要一个哈希这个密码的方法,并且能够得到我的CRON工作任务的原始密码.
实现它的最好方法是什么?
谢谢
认真的,不要使用MysqL的aes_encrypt()它是使用块密码最不安全的方法.它是使用ECB模式,我可以给一个简单的示例演示为什么这是一个严重的错误.
纯文本消息:
使用ECB模式加密的相同消息(无论使用什么密码):
使用CBC模式的EXACT相同消息(再次,您使用的密码无关紧要):
还有更多的理由不要使用MysqL的aes_encrypt,最重要的是您发送的每个单个查询也将具有您使用的aes密钥.如果数据库受到威胁,攻击者将启用日志记录,只需获取您的密钥并解密整个数据库.
那么你应该使用什么?我暂时喜欢this class.它使用CBC模式与String2Key函数和IV.您可以使用主键作为您的IV,每个消息必须具有唯一的IV.如果攻击者知道IV,并且如果它们是顺序的,只要块密码实现是安全的就可以了.重复使用IV制作WEP much less secure.