PHP安全性,以防止恶意软件插入



我正在编写一个要在服务器上运行的程序,该程序以 http://mywebsite.com/program.php?input=42 的形式从客户端获取输入

我担心让客户端能够提供任何值来代替上述 42 值可能会带来安全风险,因为他们可能会将代码放在我的服务器上可能运行的代码。我想知道在继续执行任何操作之前检查此输入是否只是字母数字是否足以保护。如果不是,我应该怎么做才能确保安全,如果是这样,关于我进行此检查的方式是否有任何安全问题(例如,在检查输入是否为字母数字时,输入如果是恶意代码,如何运行?

谢谢

这完全取决于您如何解释和使用该$_GET['input']

如果您执行这样的代码:

exec($_GET['input']);

if($_GET['input']) == 66) {
     exec("rm -r /");
}

很明显,人们可以做一些危险的事情。但它没有你想象的那么重要。

的 php 的问题在于它的类型系统不鼓励人们在使用之前检查他们的输入

一个常见的例子是SQL注入代码:

$db->query("SELECT * FROM table WHERE id = '. $_GET['id'].'");

这真的很不安全。

在您的示例中,如果您的输入应该是整数,您可以检查它是否是整数:

if (!is_integer($_GET['input'])) die("invalid");

最新更新