【问题标题】:mysql vulnerabilities. save data in php files or mysql databasesmysql 漏洞。将数据保存在 php 文件或 mysql 数据库中
【发布时间】:2011-10-23 03:56:26
【问题描述】:

我开始学习一些关于 mysql 的知识,当我阅读时,我在想 mysql 上的安全漏洞非常巨大,如果有人没有真正了解关于 mysql 的所有内容,就无法很好地覆盖。

如果我有一个不会存储大量信息的网站,将其存储在 .php 文件中会不会很糟糕?

这有什么影响和漏洞?

在我看来风险要小得多,因为如果 .php 文件没有 echo 语句,如果你尝试访问它,你得到的只是一个空白页面,如果你无法“发送代码” ' 通过用户输入并将文件发送到网站,就网站而言,它应该是安全的(显然,如果服务器本身被黑客入侵,攻击者几乎可以控制一切,但这不是问题的重点)


更新问题。

看来我上面写的并没有产生我期望的那种答案,所以我会尽量简化。

我在这里寻找的是为什么数据库比没有偏见的平面文件更安全,因为我读过关于这个主题的大多数人只会说数据库更安全,但不能说出原因。是的,它们更快,并且更容易操作数据,尤其是在数据复杂或有多个用户且信息很多的情况下。关于这一点,很容易理解为什么。

事实上,当我几天前开始阅读有关 mysql 的信息时,我发现如果您的 php 很可能受到威胁,那么数据库也很可能受到威胁,因此编写良好的安全 php 代码可能是 mysql 的第一道也是最重要的防线数据库。

如果您的 php 不受影响,那么您存储在 php 文件中的信息也是如此,因此如果您编写了良好的安全 php,那么普通 php 文件的安全性就会很好。

拥有数据库还使您使用通常不会使用的 php 函数,其中一些具有必须“修补”的真正安全漏洞,因此编写良好的安全 php 代码以使用数据库比编写同样的代码更复杂使用纯文件的安全代码。

此外,当您安装了 apache/php/mysql 时,如果没有正确配置和维护,您有 3 个可能为黑客提供入口点的东西,如果您切断 mysql,您只有 2 个,您将不必例如,为 sql 注入而烦恼,因为没有不可能发生的数据库,您可以注入所有您想要的 sql,但您将一无所获。

因此,对于管理少量数据,纯文件在我看来是一种安全的,处理数据有点复杂,考虑到我们正在谈论的数据量很小,所以速度较慢但不相关。

为什么这些扣除可能是错误的,这是我正在寻找的信息。

【问题讨论】:

  • 为什么存储很重要?重要的是您如何处理存储的数据。将某些内容保存到 PHP 文件中会删除服务器上的文件,这是自取其辱的秘诀。
  • @Furicane 这不是重点,与问题无关。我说的是存储信息,而不是“删除有效 php 代码中内容的命令”
  • 所以你说在mysql中存储一些数据比将数据存储在PHP文件中是一个更大的安全漏洞,因为如果没有echo语句,什么都不会发生?我刚刚告诉你它可以,因为 php 文件是可执行的。从理论上讲,有人可以在该文件中存储任何内容,包括恶意代码。如果有人将其存储在 mysql 中,唯一的问题是您如何提取该数据以及如何处理它。另外,一旦从 mysql 中提取 PHP 命令就不会被评估,如果你将这些东西存储在一个 php 文件中,那么它们是可执行的。如果没有更多信息,我怀疑是否有任何进一步的帮助。
  • @Furicane 我知道 php 文件是可执行的。您说在我创建的假设情况下,某人可以在该文件中存储某些内容,我的问题是,他们如何在给定情况下存储/更改/查看该文件中的某些内容?我也没有说没有 echo 声明就不会发生任何事情,我说你将无法看到信息。当您访问页面(或打印语句或其他一些)时。同样对于“商店信息”,我指的是,例如,一个单词表。 .php 文件将有一个 $x='blah';就可以了。有人怎么能看到'blah'

标签: php mysql security


【解决方案1】:

苹果和橘子。

您可以驾驶悍马参加拉力赛并完成比赛,但与布加迪相比,您肯定会排在最后。开一辆布加迪越野,它肯定会落后于悍马。

PHP 是一种服务器端脚本语言。数据存储和检索不是 PHP 的主要考虑因素。

mySQL 是一个关系数据库管理系统。它的设计 100% 用于数据存储、检索和安全性。

您对 PHP 中的数据存储和检索有什么计划?似乎必须做很多不必要的工作来重新发明轮子来实现这一点。你为什么要?

如果不了解您在 mySQL 中特别担心的安全问题,则无需添加更多内容。

编辑:An article calling out the general differences.

【讨论】:

  • 这是一个简单的问题,可能是一个我不知道的简单(也许很大)答案。比方说,在 .php 文件中存储非恶意字符串/数组数据有哪些安全隐患?有人怎么能看到或修改它。您的类比也很有趣,因为布加迪可能无法完成越野课程xD
  • @wxiiir 哈哈好点 :) 所以回答你关于访问平面 php 文件中的数据的问题.. 它会与访问你的文件系统相结合。考虑最近对 TimThumb(PHP 中流行的缩略图创建脚本)wpcandy.com/reports/timthumb-security-vulnerability-discovered 的利用。攻击者想出了如何允许自己上传和执行 TimThumb 缓存目录中的任意 PHP 代码。现在想象一下,如果这个 PHP 代码只是简单地转储了 web 目录中所有文件的内容......他们现在拥有了你的所有数据。
  • 这是很好的信息。假设我有这个被黑客入侵的网站,他们可以很容易地看到将存储在普通 php 文件中的信息(如果我以这种方式存储它)。现在的问题是,为什么他们不能看到我的数据库的信息(如果不使用普通的 php 文件,我会使用 mysql 数据库)?我想当能够在网站内执行任何 php 代码时,黑客访问数据库不会有任何困难,也许他们最多比访问普通 php 文件上的信息多花 10 分钟,我错了吗?
  • mySQL 数据库应该设置在服务器的另一部分或完全不同的服务器上;不暴露在互联网上,只暴露给服务器端代码。密码和连接字符串应保存在服务器配置文件中的 web 目录之外。因此,访问 web 目录并不意味着立即访问数据库;需要一些逆向工程。 mySQL 还允许轻松的字段级加密。如果您要在 PHP 中手动完成,这将更加复杂。
  • 我想这几乎回答了我的问题,如果网站脚本可以访问数据库,那么黑客将放在网站上的脚本或原始脚本但被黑客修改,所以它会延迟他们也许很多,也许不会,但不会阻止他们。感谢您的回复,即使 cmets 更清楚,我也会选择您的回复。以一种可以延迟黑客的方式将数据存储在平面文件中,这也是可行的,它不会延迟他们太多,但它是可行的。
【解决方案2】:

这两点将涵盖大多数安全问题:

1)学习PDO和prepared statement协议。这将处理大部分(如果不是全部)SQL 注入问题。不要将原始 SQL 发送到数据库。

2) 清理所有进入 PHP 的 GET 和 POST 数据。这将处理大多数 XSS。

许多其他语言的框架都会为您执行此操作,但是 PHP 新手只会使用纯 PHP 并让自己容易受到各种攻击。这就是 PHP “不安全”的原因。

阅读安全性,并尝试实施一些您认为重要的指针。没有语言、框架、平台等是 100% 安全的。就像生活中的其他事情一样,您会采取尽可能多的步骤来最大程度地降低风险。

【讨论】:

  • 我已经知道 sql 注入,并且我编写了许多收集帖子和获取数据的东西,并且我每次都对其进行适当的清理。现在你说 php 新手只会在裸 php 上存储东西并对各种攻击开放,这就是 php 不安全的原因,这就是我感兴趣的信息,这就是为什么我创造了这个假设情况来看看是否有人会知道检索保存在“平面 php 文件”中的数据的已知方法
猜你喜欢
  • 2011-09-24
  • 2012-09-29
  • 2011-04-01
  • 2012-04-28
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 2019-05-26
  • 2014-03-29
相关资源
最近更新 更多