在网上浏览我的网站的不同解决方案时,我总是仔细检查安全风险,特别是当它涉及服务器全局时。
虽然我理解在没有清理的情况下使用输入数据的风险,但我不确定将服务器全局变量用于简单的PHP函数。
我正在使用一个函数检查我的URL中是否有特定的字符串:
if (strpos($_SERVER['REQUEST_URI'], 'foo') !== false) :
// do something
endif;
我是否需要担心任何XSS或注射乐趣?
答案 0 :(得分:1)
没有。你可以保持放松。
如果您尝试将变量作为代码进行评估,则很少会出现某些问题,但不是您的情况。
全局变量的主要安全问题在于一年前流行的指令register_globals
(从PHP 5.4.0开始删除):此选项处于活动状态,所有GET和POST变量在全局变量中转换(即$_GET['user']
可用$user
)。
因此,如果http://example.com/index.php?destroyall=1
为index.php
,则调用if( $_GET['areYouSure']==1 )
{
$destroyall = 1;
}
if( $destroyall )
{
deleteAllMyFilesNow();
}
之类的网址:
deleteAllMyFilesNow()
即使areYouSure
为False,也会执行 $_GET[destroyall]
,因为$destroyall
直接设置register_global
的值。
要了解datepicker()
受欢迎程度,请考虑PHP site报告:
PHP中最有争议的变化可能是PHP指令register_globals的默认值从ON变为OFF