过滤XSS攻击和SQL注入函数

发表于:2014-4-08 13:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:milantgh    来源:51Testing软件测试网采编

分享:
/*
+----------------------------------------------------------
* 函数名称:escapeMysql()
* SQL注入主要是提交不安全的数据给数据库来达到攻击目的。为了防止SQL注入攻击,PHP自带一个功能可以对输入的字符串进行处理,可以在较底层对 * 输入进行安全上的初步处理,也即Magic Quotes。(php.ini magic_quotes_gpc)。如果magic_quotes_gpc选项启用,那么输入的字符串    * 中的单引号,双引号和其它一些字符前将会被自动加上反斜杠\。
* 但Magic Quotes并不是一个很通用的解决方案,没能屏蔽所有有潜在危险的字符,并且在许多服务器上Magic Quotes并没有被启用。所以,我们    * 还需要使用其它多种方法来防止SQL注入。许多数据库本身就提供这种输入数据处理功能。例如PHP的MySQL操作函数中有一个叫                 * mysql_real_escape_string()的函数,可将特殊字符和可能引起数据库操作出错的字符转义。
+----------------------------------------------------------
* 函数作用:检测提交的值是不是含有SQL注射的字符,防止注射,保护服务器安全
+----------------------------------------------------------
* @param mixed $sql_str: 提交的变量
+----------------------------------------------------------
* @return mixed 返回检测结果,ture or false
+----------------------------------------------------------
*/
function escapeMysql($el){
if(is_array($el))
{
return   array_map("escapeMysql",   $el   );
}else{
/*如果Magic Quotes功用启用    */
if (!get_magic_quotes_gpc()) {
$el = mysql_real_escape_string(trim($el));
}
$el    =    str_ireplace("%5d%5c", "'", $el);
$el = str_replace("_", "\_", $el);    // 把 '_'过滤掉
$el = str_replace("%", "\%", $el);    // 把 '%'过滤掉
$el = nl2br($el);    // 回车转换
return   $el;
}
}
/**
+----------------------------------------------------------
* 变量过滤
+----------------------------------------------------------
* @param mixed $value 变量
+----------------------------------------------------------
* @return mixed
+----------------------------------------------------------
*/
function var_filter_deep($value) {
return $value;
if(is_array($value))
{
return $value =   array_map("var_filter_deep",   $value   );
}else{
$value = RemoveXSS($value);
//$value = inject_check($value);
$value = escapeMysql($value);
return $value;
}
}
/*
+----------------------------------------------------------
* 函数名称:verify_id()
+----------------------------------------------------------
* 函数作用:校验提交的ID类值是否合法
+----------------------------------------------------------
* 参  数:$id: 提交的ID值
+----------------------------------------------------------
* 返 回 值:返回处理后的ID
+----------------------------------------------------------
*/
function verify_id($id=null) {
if (!$id) { exit('没有提交参数!'); }    // 是否为空判断
elseif (inject_check($id)) { exit('提交的参数非法!'); }    // 注射判断
elseif (!is_numeric($id)) { exit('提交的参数非法!'); }    // 数字判断
$id = intval($id);    // 整型化
return $id;
}
/**
+----------------------------------------------------------
* 变量安全过滤
+----------------------------------------------------------
* @static
* @access public
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
*/
function varFilter ()
{
$_SERVER = array_map(   "var_filter_deep", $_SERVER );
$_REQUEST = array_map(   "var_filter_deep", $_REQUEST);
$_POST    = array_map(   "var_filter_deep", $_POST   );
$_GET     = array_map(   "var_filter_deep", $_GET    );
$_COOKIE = array_map(   "var_filter_deep", $_COOKIE );
//print_r($_POST);
}
22/2<12
100家互联网大公司java笔试题汇总,填问卷领取~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号