【发布时间】:2011-01-01 21:33:06
【问题描述】:
我有一个站点设置,在页面加载时,将所有用户提交的字符串转换为 SafeString 对象。对于那些不熟悉 SafeString 的人来说,它基本上会强制用户回显已清理过的数据,以防止 XSS 之类的......
总之,有问题。我的 $_SESSION 数组被__PHP_Incomplete_Class Object 填充。根据我的阅读,这是由于没有在会话之前初始化类,然后在会话中存储类对象。
这是我的代码:
require_once __WEBROOT__ . '/includes/safestring.class.php';
$temp = array
(
&$_SERVER, &$_GET, &$_POST, &$_COOKIE,
&$_SESSION, &$_ENV, &$_REQUEST, &$_FILES,
&$HTTP_SERVER_VARS, &$HTTP_GET_VARS,
&$HTTP_POST_VARS, &$HTTP_COOKIE_VARS,
&$HTTP_POST_FILES, &$HTTP_ENV_VARS
);
function StringsToSafeString(&$array)
{
foreach ($array as $key => $value)
{
if (is_string($array[$key]))
{
$array[$key] = new SafeString($value);
}
if (is_array($array[$key]))
{
StringsToSafeString($array[$key]);
}
}
}
StringsToSafeString($temp);
unset($temp);
我想不出一种可以解决问题的重写方法:/
有什么想法吗?
【问题讨论】: