用程序编辑php代码

2024-04-16 22:26:21 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,这里我有900多页的代码,php代码,每一个1000多行长,不超过20000。。。都易受sql注入攻击。因此,我没有花一年的时间在每一个用户输入中加入mysql real escape string,而是计划编写一个程序,搜索代码行,在任何需要的地方输入它,比如在每个post变量上。有人认为这有道理吗?如果是的话,你建议用哪种语言?我有一些使用php的想法,但是没有什么好主意。我担心js会太慢点。好的感谢您的帮助


Tags: 代码用户程序sqlstring地方时间mysql
2条回答

正如我在评论中提到的,已经有至少一个SO question要求使用静态分析工具来处理这个问题。如果有一个现有的工具正在被多个其他项目使用,这通常会使它比没有人使用过的工具更可信。你知道吗

不幸的是,这个问题没有任何好的答案。对PHP静态分析器的快速搜索出现了PHP Source Code Security FrameworkPHP_CodeSniffer,但是除了它们的名字之外,我对它们一无所知,所以不要把这当作认可。你知道吗

如果您必须自己构建它,那么Python标记意味着您希望用Python编写它。通常,我会说这是一个很好的选择。但是对于这样的事情,从尽可能多的其他人那里获得认同对于能够信任您的代码是至关重要的,我认为如果您使用它,您可能会有更多的认同,因为您可以确定任何想要使用您的工具的人都会知道PHP。你知道吗

还有一种可能性:如果您的代码遵循非常一致的样式,那么就有可能做一些更简单的事情,尽管并不普遍适用,但确实可以在您的特定代码中找到所有SQL注入漏洞。既然您试图编写的代码可以让自己确信是万无一失的,那么在这种情况下,简单性的好处可能是值得的。你知道吗

抱歉,这太模糊了,但这是个相当模糊的问题。我真正能说的是,这在原则上是合理的;我真的猜不出它在实践中是否可行。你知道吗

我不一定推荐这样做,因为您基本上是在打开magic quotes,但是如果您没有时间正确地修复它,那么您可以将其添加到引导文件中,并将其包含在所有脚本中

foreach ($_POST as &$v) {
    $db->escape($v); // mysql_real_escape_string() or mysqli or pdo
}
unset($v);

您将需要修改它以检查$v中的数组并相应地转义它们。您还需要为$u GET执行相同的操作。你知道吗

请注意,虽然这可能会阻止sql注入,但可能会导致其他问题。我建议花点时间来重构。你知道吗

相关问题 更多 >