当前位置: 首页 > 知识库问答 >
问题:

如何将敏感数据安全地存储在 MySQL 数据库中?

曹兴贤
2023-03-14

我正在为我工作的一家公司申请工作。我有它来防止SQL注入和一些XSS技术。我的主要问题是保护敏感信息的安全,比如SSN和地址,因为公司需要它来为推销员制作1099表格。

我不知道如何做这部分,但是我应该加密所有内容,然后在它进入MySQL数据库时对其进行解密吗?

共有3个答案

羊柏
2023-03-14

正如评论中所暗示的,你在问一个巨大的问题。你需要研究许多不同的问题:

  • SQL注射以及如何预防
  • XSS以及如何预防它
  • 使用SSL加密提交的表单数据
  • 在数据库中存储敏感信息的最佳实践

很难在一个答案中解决所有这些问题。我建议在这个网站上搜索上面提到的主题。

逄学潞
2023-03-14

这是一个过于简化的答案,应该谨慎对待,因为大多数关于安全性的答案:

>

  • 到处使用SSL。

    使用安全的加密密钥

    对于加密数据的存储,您可以使用< code>BLOB字段,并使用MySQL的内置加密功能。示例:

    update mytable set myfield = AES_ENCRYPT('some value', SHA2('your secure secret key', 512));
    

    如果您喜欢在应用程序代码中进行加密/解密,请查看PHP的Mcrypt函数。

    • 加密用户输入。
    • 存储在数据库中。
    • 获取后解密

    这绝对不是一个完整的指南,但这是一个开始,比什么都不做要好。

    您可能可以了解更多信息https://security.stackexchange.com/

  • 颜祖鹤
    2023-03-14

    带有键的SQL查询(如韦斯利·默奇所建议的)不是一个好主意。如果您这样做:

    update mytable set myfield = AES_ENCRYPT('some value', 'your secure secret key');
    

    ...并且查询被记录(对于inst。)您的安全密钥是以明文形式捕获的,这种情况永远不会发生。当您运行类似于< code>SHOW PROCESSLIST的查询时,这样一个带有密钥的查询也是可见的。

    下一个问题在哪里存储安全密钥?在 PHP 文件中?它又是纯文本。

    加密数据:

    使用私钥/公钥加密(http://en . Wikipedia . org/wiki/Public-key _ cryptography)。PHP对它有相当好的支持。

    • 公钥可以与用户一起存储在DB中,它是公开的。
    • 私钥可以使用用户密码加密。当用户登录时,您解密私钥并将其存储在他的cookie(如果您使用SSL,它不是那么糟糕的地方)或会话中。两者都不完美,但比php文件中的纯文本更好。
    • 使用公钥加密,私钥解密。
    • 只有用户才能访问他的数据。

    如果想了解更多,可以谷歌“用户控制加密”或者“零知识隐私”。

    SQL插入/XSS:

    最好的保护就是安全app。毫无疑问。如果你想保护它,你可以使用for inst PHP IDS来检测攻击:https://github.com/PHPIDS/PHPIDS

    我有很好的经验。

     类似资料:
    • 我的PHP网站有以下内容: > 启用SSL Cookie: 传输时的密码SHA512,然后是password_hash(),最后是PASSWORD_BCRYPT 我现在希望使用AES_Encrypt函数加密敏感数据,方法是将用于加密和解密的$key存储在webroot目录之外。 这可能会存储病人的数据,我所拥有的是否足够安全? 问题: 当您插入/更新时,您是如何清理输入的?如果您使用的是准备好的语

    • 问题内容: 我的主要问题是,我想检查具有相同SSN的某人是否在我们这里有多个帐户。当前,所有个人身份信息都经过加密,解密需要很短的时间。 我最初的想法是在数据库的用户列中添加一个ssn列。然后,我可以简单地执行一个查询,使所有具有ssn或用户A的用户。 我不想将ssn以明文形式存储在数据库中。我当时只是想以某种方式加盐并对其进行哈希处理。 我的主要问题是,这是否安全(或安全性如何)?有什么简单的方

    • 我正在构建一个React本机应用程序,需要保存一些敏感数据,如令牌和刷新令牌。显而易见的解决方案是使用异步存储保存这些信息。问题在于异步存储的安全级别。 AsyncStorage提供了一种本地存储令牌和数据的方法。在某些方面,它可以与LocalStorage选项相比较。在完整生产应用程序中,建议不要直接访问AsyncStorage,而是使用抽象层,因为AsyncStorage与使用同一浏览器的其他

    • 问题内容: 我不敢相信我无法做到这一点,但我希望能够将当前日期和时间从php存储到mysql表中。 表中的列是类型datetime。我已经试过了 但是我的时间戳记为0000-00-00 00:00:00 这一定很容易做到,但我无法使其正常运行!我想使用来自php的时间戳,而不是使用mysql now()函数 问题答案: 不要将其另存为Unix Timestamp(输出),而是另存为DATETIME

    • 我创建了一个TextView,它以多行显示值 ,我希望将该值保留在SQLite数据库中。这是我使用的代码: 问题是当我保存值时,整个值被插入到一个单元格中。我希望每行的值分开,然后插入到每行的单个单元格中,尽管我使用扫描器方法插入数据,但它不起作用。那有什么办法吗?

    • 问题内容: 使用Java 对象,最简单的方法是将它们存储为MySql 对象(在UTC中)。切换到这种方法将不再起作用,因为MySQL 无法提供存储纳秒的精度。仅将它们截断可能会导致新创建的对象与从数据库读取的对象之间的意外比较结果。 时间戳不适合我作为一个优雅的解决方案:手动编写选择查询变得更加困难,因为必须将时间戳转换到任何地方以使其可读,并且与值甚至值相比,Java的处理有些笨拙。 去这里最好