保护mySQL数据

时间:2010-07-22 12:59:41

标签: php mysql security

我正在将数据插入mySQL数据库,但我正在插入银行详细信息,因此它非常敏感,我如何保护它并防止它落入坏人之手?

目前代码仍然非常基础,没有任何预防措施,

mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("db") or die(mysql_error());

$result = mysql_query("INSERT INTO table (id, name, surname) 
VALUES (NULL, '".$_SESSION['name']."', '".$_SESSION['surname']."' )")
or die(mysql_error());

提前Thanx!

7 个答案:

答案 0 :(得分:7)

如果您真的存储银行详细信息,请尽可能多地阅读此区域;考虑聘请在该领域拥有大量专业知识的人。

敏感数据就像地雷一样,你不想触摸它,除非你真的知道你正在做什么。

编辑 - 我想澄清一点,我在这里是致命的,而不是轻率的。如果我得到这样的项目,我会提出一个“超出我的深度”的标志,以保护自己和我的公司。国际海事组织这是其中一个项目,其中未能提供足够的基础设施和流程可能导致公司破坏性的妥协。

我可能会在这里反应过度,但我正在尝试提供真正的建议,我会给同样问题的朋友或同事。

答案 1 :(得分:4)

您似乎正在编写一个PHP应用程序(我将假设它将部署到Web上)

  • 使用HTTPS进行网络通信
  • 请勿使用MySQL的默认端口
  • 为每个操作(每个操作使用不同的密码)设置不同的用户帐户(在MySQL中),例如,您可能拥有mytable1_select帐户,该帐户只能在mytable1上执行选择
  • 将随机字符串生成器用于用户名和密码。虽然这会使代码更难理解,但这会让一个恶意的人更难获得访问权限,因为他们需要猜测用户名和密码
  • 通过转义所有用户输入的字符串来防止SQL注入

答案 2 :(得分:3)

您应该使用 Prepared Statements 来保护自己。

您的示例代码风险太大了!

答案 3 :(得分:2)

您需要在敏感数据进入数据库之前对其进行加密。 Mcrypt是PHP中常见的一种方式。

Mcrypt manual on php.net

答案 4 :(得分:1)

您应该在以下地方寻找安全保障:

  • 网站上的脚本:无内联SQL - 使用存储过程或预准备语句
  • 从网站到数据库的数据传输:使用HTTPS
  • 数据库中的数据存储:您可以加密某些表或整个数据库
  • 数据库和密钥备份:如果备份落入坏人之手,则会受到影响。备份应该保持安全。

阅读此主题,它将教会您很多关于构建网站的信息

https://stackoverflow.com/questions/72394/what-should-a-developer-know-before-building-a-public-web-site

答案 5 :(得分:0)

您需要阻止SQL注入。在你要插入的所有变量周围使用mysql_real_escape_string()。更好的是,使用PDO和准备好的语句。更好的是,使用PDO和存储过程。

答案 6 :(得分:0)

这些只是我没有看到别人做的建议。

  1. 由于你正在使用$ _SESSION,请确保关闭register_globals以避免SQL注入。
  2. 保护您的MySQL数据库。它甚至不应该在互联网上。只有您的Web服务器才能访问它。