phpコードセキュリティ関連(1)-ecshopのいくつかのセキュリティ関連関数
2628 ワード
/**
*
*
* @access public
* @param mix $value
*
* @return mix
*/
function addslashes_deep($value)
{
if (empty($value))
{
return $value;
}
else
{
return is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value);
}
}
上のarray_map関数は多次元配列に対してaddslashes_を再帰的に呼び出すdeepでフィルタリングを行います.
/**
*
*
* @access public
* @param mix $value
*
* @return mix
*/
function stripslashes_deep($value)
{
if (empty($value))
{
return $value;
}
else
{
return is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
}
}
/**
* header ,
*
* @param string string
*
* @return void
**/
function ecs_header($string, $replace = true, $http_response_code = 0)
{
if (strpos($string, '../upgrade/index.php') === 0)
{
echo '<script type="text/javascript">window.location.href="' . $string . '";</script>';
}
$string = str_replace(array("\r", "
"), array('', ''), $string);
if (preg_match('/^\s*location:/is', $string))
{
@header($string . "
", $replace);
exit();
}
if (empty($http_response_code) || PHP_VERSION < '4.3')
{
@header($string, $replace);
}
else
{
@header($string, $replace, $http_response_code);
}
}
PHPのヘッダ関数はURLに含まれるデータの正確なフィルタリングが欠けており,リモート攻撃者はこの脆弱性を利用してスクリプト注入攻撃を行うことができる.
またPHPのヘッダ()実装には潜在的なバッファオーバーフローホールが存在する.
/**
* MYSQL LIKE
*
* @access public
* @param string string
* @return string
*/
function mysql_like_quote($str)
{
return strtr($str, array("\\\\" => "\\\\\\\\", '_' => '\_', '%' => '\%', "\'" => "\\\\\'"));
}
またhtmlspecialchars()関数は、定義済みの文字をHTMLエンティティに変換します.htmlentities関数