使用MySQL触发器执行PHP有哪些安全隐患?

时间:2013-04-25 18:07:50

标签: php mysql security triggers

我四处寻找found a way to do exactly this。但我犹豫不决,因为我偶尔会读到它"security risk"。不幸的是,没有人详细说明原因。我个人不能想到任何安全风险,这些安全风险不会让攻击者已经拥有他们不应该拥有的权限。 MySQL / PHP服务器在同一台机器上运行。所以MySQL和PHP之间没有公开请求。

触发的PHP脚本将对第三方CRM / ESP上的Web服务进行API调用,以便在其服务器上保留某些表的简化版本。然后,我们的营销团队可以登录CRM的GUI并发送电子邮件,收集信息并规划营销活动,而无需打扰开发团队。

此服务器上的表格不反映我们的表格,它们仅包含所需的信息。我想使用触发器的原因是尽可能保持他们的信息是最新的,并将这些逻辑放在一个地方,而不是分散在整个项目中。

更新 我总是清理/验证任何触及MySQL的表单。我从不将PHP存储在我的表中。我从不使用FTP(SFTP使用.pem而不是密码)。 将要执行的脚本将是我创建的单个文件,该文件不会更改通过我正在使用的相同框架(zend)。传递给脚本的唯一变量是行的id(将被验证为INT)。 我正在考虑不要因为性能而这样做。让PHP异步执行是可能的,但很难并且不值得花时间去实现。但我仍然很好奇,除了性能损失之外,安全问题与网络服务有何不同?我的意思是你肯定要像对待网络服务那样进行消毒/验证,所以考虑到这一点,会有什么问题?

1 个答案:

答案 0 :(得分:0)

您的应用可能会受到不同的侵害,例如SQL注入,嗅探的FTP密码或代码本身的漏洞。保持这些内容尽可能地本地化以防止一个区域中的漏洞进行级联通常是一个好主意。

例如,假设您在数据库中存储敏感数据。通常,您将使用未存储在数据库本身中的salt和密钥以某种方式加密此数据。然后,如果您的数据库被SQL注入攻击,攻击者可能会造成损害,但他们将无法窃取敏感信息。但是,如果您在数据库中执行以文本形式存储的PHP,攻击者肯定会意识到并更新它以执行他的代码,从而可以弄清楚如何加密敏感数据并解密它。

简而言之,SQL注入很常见(即使您遵循最佳实践,也没有人说明年将会有实习生),因此执行存储在数据库中的代码是不安全的。

编辑:在仔细阅读您的链接后,我需要重申一些事情。我没有看到这方面存在特定的安全风险,但这似乎真的违反了数据和逻辑的分离。此外,mysql不是异步的,并且没有办法可以在加载下扩展...