从PHP连接到MySQL数据库

时间:2011-02-05 02:07:35

标签: php mysql database

我在网上找到的所有内容都告诉我提供数据库用户和密码来连接数据库。

像往常一样偏执狂,我不喜欢这个,因为这意味着拥有php源的任何人现在都可以登录数据库并使用数据。这是访问数据库的唯一方法吗?

上下文:http://www.cyberciti.biz/tips/facebook-source-code.html

5 个答案:

答案 0 :(得分:3)

是的,这是唯一的方法。此外,作为一个偏执狂你应该知道登录和密码的知识是不够的,但你必须从正确的主机(允许使用此凭据登录)登录。

此外,作为一个偏执狂,你为什么害怕窃取你的资源而不怕你的代码中存在漏洞,即使没有登录名和密码,黑客也会窃取数据?在这种情况下,偏执狂最好永远不要编程。

答案 1 :(得分:1)

由于PHP将由解释器解析并且只输出HTML,因此您不必担心因为无法获取PHP源代码(猜测您已设置适当的度量以便PHP源不能下载)。

阻止从外部到MySQL服务器的所有流量。只允许localhost使用它。

答案 2 :(得分:1)

这不是唯一的方法,但它是世界上大多数人(如99.999%)的方式,而据我所知,100%的网络程序员。

考虑一下:如果密码在某处硬编码到源中,为什么要这么麻烦?为什么不使帐户密码更少,只是限制其访问Web服务器?有人可能会说,“哦,不要!不要那样做!”但我再次问,有什么区别?打开了什么安全漏洞呢?

真正的安全问题实际上是保护自己免受SQL注入。如果出现这样一个开放的账户,你就会受到攻击:

1)您的代码存在故障,可以被利用来执行用户不应该做的事情,或者

2)他们可以通过SQL注入欺骗你的数据库服务器执行代码。

因此,SQL注入是您需要防范的最大问题。

还有二级保护措施。例如,大多数人都对他们的“用户”表有偏执,这些表包含用户和(不幸的是大多数情况下)纯文本密码,如果您要向用户发送密码,则需要这些密码。

你可以在这个表上加入第二级保护(如果他们通过你的SQL注入保护或找到​​一个漏洞,让你的程序做一些你认为不会做的事情)将其锁定,这样用户就看不到了它完全或写入它。然后你编写两个存储过程,“addUser(用户名,密码)”和“checkPassword(用户名,密码)”。这是“深度安全性”的示例,其中您在更敏感的数据周围有多个安全级别。

答案 3 :(得分:0)

答案 4 :(得分:0)

您需要以某种方式提供连接信息,但您可以通过将MySQL用户设置为具有尽可能有限的权限来降低风险。因此,只在需要时授予读/插入访问权限,并且您可以将用户主机设置为仅允许来自127.0.0.1的连接。

还有一些商业混淆产品,如http://www.zend.com/en/products/guard/,可能会引起关注。我不确定它们是否包含字符串加密。