使用 explode() 和 count() 进行代码注入的风险?

Risk of code injection with explode() and count()?

我正在使用一个网站,该网站当前将产品 ID 列表存储在 URL 中的 字符串 中。

看起来像这样:localhost/product-list?compare=7011,7012,7013

此列表使用 explode()count() 拆分,以显示页面上的产品数量。

我是否应该担心人们在 URL 中插入自己的值,是否存在使用 explode()count() 进行代码注入的风险?

好吧,这实际上取决于它们在您的代码中的使用方式。例如,如果您在数据库中查询这些 ID。如果您使用参数化查询来实现这一点,应该没问题。但是,为了确保奇怪的输入不会在您的代码中漫游,您可以使用简单的 preg_match 来验证数字 (ID) 和逗号。

<?php

$compare = '7011,7012,7013';// or from $_GET

var_dump(preg_match('/^(\d+,?)+$/',$compare));

演示: https://3v4l.org/WjeDe