我为iPhone / iPod Touch开发了一个必须访问MySQL数据库的应用程序.我编写了一个PHP API,可以从iPhone应用程序中调用它.
在数据库中,我存储了要加密的敏感数据.我想我将使用AES_ENCRYPT.我的问题是在哪里存储密钥.
您最好知道将密钥存储在哪里以进行加密/解密,以便其他任何人都看不到它,例如黑客.
解决方法:
一般来说:
>不要将密钥保存在Web服务器可以直接访问的服务器的一部分中.例如,如果您的站点位于/ var / www / home中,请不要在其中放置密钥.将其放在树的Web服务器之外的某个位置.
>确保正确设置了包含密钥的文件夹上的权限.您的PHP应用程序仅需要具有读取权限,而不能在该文件夹(和密钥文件)上写入或执行.
>确保服务器本身具有良好的密码(长密码,很多随机数字,字母和符号).
>确保服务器受到正确配置的防火墙的保护,并保持最新的安全补丁程序为最新.
至于试图使密钥和数据保持分离-这是一个长期存在的问题,没有很好的解决方案.问题的简单事实是您的应用程序必须有权访问密钥.这要么意味着迫使要使用该应用程序的所有人记住该键(这可能导致在普通视图中的显示器上留下粘滞便笺),要么它必须位于该应用程序可以找到它的某个位置,或者位于同一位置服务器或其他.