php抓取网页数据插入数据库(数据库使用中需要关注的主要问题及密码的暴露)
优采云 发布时间: 2022-03-10 12:24php抓取网页数据插入数据库(数据库使用中需要关注的主要问题及密码的暴露)
使用数据库的主要问题之一是访问权限的暴露,即用户名和密码。为了编程方便,一般使用一个db.inc文件来保存,如:
用户名和密码是敏感数据,需要特别注意。它们写在源代码中会产生风险,但这是一个不可避免的问题。如果您不这样做,您的数据库将无法使用用户名和密码进行保护。
如果你阅读默认版本的 http.conf(Apache 的配置文件),你会发现默认的文件类型是 text/plain(纯文本)。如果像 db.inc 这样的文件存储在 网站 根目录中,则会产生风险。网站 根目录下的所有资源都有对应的 URL。由于 Apache 并没有对带有 .inc 后缀的文件定义处理方式的类型,所以在访问这种类型的文件时,会以普通文本的类型进行。Return(默认类型)以便在客户端的浏览器上公开访问权限。
为了进一步说明这种风险,请考虑将 /www 作为 网站 根目录的服务器。如果 db.inc 存储在 /www/inc,它有自己的 URL(假设是主机域名)。通过访问此 URL,您可以看到 db.inc 的源文件以文本模式显示。无论您将文件保存在/www 的哪个子目录,都无法避免访问权限暴露的风险。
此问题的最佳解决方案是将其保存在 网站 根目录以外的收录目录中。您不需要将它们放在文件系统上的特定位置以收录它们,您需要做的就是确保 Web 服务器具有对它们的读取权限。因此,将它们放在 网站 根目录中不一定有风险,只要收录文件仍在 网站 根目录中,任何降低风险的努力都是徒劳的。实际上,您只需要将必须通过 URL 访问的资源放在 网站 根目录中即可。毕竟这是一个公共目录。
上一个主题对于 SQLite 数据库也很有用。将数据库存放在当前目录下非常方便,因为只需要调用文件名而不需要指定路径。但是,将数据库保存在 网站 根目录中会带来不必要的风险。如果您不采取安全措施来防止直接访问,您的数据库就会面临风险。
如果外部因素导致无法将所有收录文件保留在 网站 根目录之外,您可以将 Apache 配置为拒绝对 .inc 资源的请求。
Order allow,deny
Deny from all
如果我只是为了举个例子而写这个,那是可以理解的。毕竟大家都学过一些方法,只是这个例子有点生硬。实际上,只需将文件重命名为 db.inc.php 即可。这就像在外面盖一座更大的房子,然后把它包起来,而不是在房子上修一个洞。
稍后您会看到另一种防止暴露数据库访问权限的方法,该方法在共享服务器环境中非常有效(在这些环境中,即使文件位于 网站 根目录之外,也存在暴露风险)。