繁体   English   中英

从PHP连接到MySQL数据库

[英]Connecting to MySQL database from PHP

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

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

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

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

另外,作为一个偏执狂,您为什么不怕窃取您的源代码,又不怕自己的代码中存在漏洞,即使没有登录名和密码,这些漏洞也使黑客能够窃取数据? 在这种情况下,偏执狂最好不要完全编程。

由于PHP将由解释器解析,并且仅输出HTML,因此您不必担心,因为将无法获得PHP源代码(猜测您已经设置了适当的措施,因此无法下载PHP源代码)。

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

这不是唯一的方法,而是世界上大多数国家(例如99.999%)的方法,据我所知,这是100%的Web程序员。

考虑一下:如果密码被硬编码到源中的某个地方,为什么要麻烦呢? 为什么不让该帐户成为无密码帐户,而仅限制其对Web服务器的访问? 有人可能会说:“哦,不!不要那样做!” 但是我再次问,有什么区别? 到底打开了什么安全孔?

真正的安全问题实际上是在保护自己免受SQL注入的侵害。 该开放帐户使您在以下情况下容易受到攻击:

1)您的代码中有一个小故障,可以利用该小故障来执行用户不应执行的操作,或者

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

因此,SQL注入是您要防止的大错误。

也有二级保护。 例如,大多数人对包含用户和(不幸的是,大多数情况下)纯文本密码的“用户”表感到疑惑,如果要通过电子邮件向用户发送密码,这是必需的。

您可以通过锁定该表来使其处于第二级保护(以防它们超出了SQL注入保护或发现利用漏洞使您的程序执行您认为不会做的事情),从而使用户根本看不到它或写。 然后,编写两个存储过程,“ addUser(用户名,密码)”和“ checkPassword(用户名,密码)”。 这是“深度安全”的示例,其中您可以对较敏感的数据具有多个安全级别。

不会更好,但是您可以在php.ini中指定它。http: //www.php.net/manual/zh/mysql.configuration.php#ini.mysql.default-password

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

也可能有一些有趣的商业混淆产品,例如http://www.zend.com/en/products/guard/ 我不确定它们是否包含字符串加密。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM