Jef*_*vis 0 php security superglobals
我试图以不会打开潜在安全问题的方式读取get参数.
我在想的是将请求参数明确地与我期望的匹配,然后为任何不匹配的东西设置默认值.
例如:
if ($_REQUEST['media'] == "video")
    $sort = "video";
elseif ($_REQUEST['media'] == "audio")
    $sort = "audio";
else
    $sort = "both";
这还不够或需要进一步的步骤吗?
你提到的是安全的,但过于冗长.使用PHP的数组操作可以让PHP为您处理脏工作:
$sort_valid = array('video', 'audio', 'both');
$sort = 'both'
if (isset($_REQUEST['media']) && in_array($_REQUEST['media'], $sort_valid)) {
    $sort = $_REQUEST['media'];
}
如果这种超全局解析在整个代码中很常见,那么您可以将它抽象为一个为您处理它的函数(就像许多大型PHP项目一样).
正如加文指出,它也可以使用您所感兴趣的特定超全局是一个好主意(即$_GET,$_POST或$_COOKIE)如果可能的话.这可能似乎并不重要了,但一些丑陋的虫子可以从命名冲突manefest三个超全局变量之间会发生(例如,sort在$_COOKIE可参考的搜索结果的默认排序,但sort在$_GET指升序或降序).
| 归档时间: | 
 | 
| 查看次数: | 2021 次 | 
| 最近记录: |