• 众多开源系统使用的过滤SQL注入函数


    $magic_quotes_gpc = get_magic_quotes_gpc(); 
    @extract(daddslashes($_COOKIE)); 
    @extract(daddslashes($_POST)); 
    @extract(daddslashes($_GET)); 
    if(!$magic_quotes_gpc) { 
    $_FILES = daddslashes($_FILES); 
    } 
    
    
    function daddslashes($string, $force = 0) { 
    if(!$GLOBALS['magic_quotes_gpc'] || $force) { 
    if(is_array($string)) { 
    foreach($string as $key => $val) { 
    $string[$key] = daddslashes($val, $force); 
    } 
    } else { 
    $string = addslashes($string); 
    } 
    } 
    return $string; 
    } 
     
    
    大家可以增强下面的代码加以保护服务器的安全,PHP防止SQL注入安全函数十分重要!
    
    /* 
    函数名称:inject_check() 
    函数作用:检测提交的值是不是含有SQL注射的字符,防止注射,保护服务器安全 
    参  数:$sql_str: 提交的变量 
    返 回 值:返回检测结果,ture or false 
    */ 
    function inject_check($sql_str) { 
    return eregi('select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); // 进行过滤 
    } 
    
    /* 
    函数名称: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; 
    } 
    
    /* 
    函数名称:str_check() 
    函数作用:对提交的字符串进行过滤 
    参  数:$var: 要处理的字符串 
    返 回 值:返回过滤后的字符串 
    */ 
    function str_check( $str ) { 
    if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否打开 
    $str = addslashes($str); // 进行过滤 
    } 
    $str = str_replace("_", "\_", $str); // 把 '_'过滤掉 
    $str = str_replace("%", "\%", $str); // 把 '%'过滤掉 
    
    return $str; 
    } 
    
    /* 
    函数名称:post_check() 
    函数作用:对提交的编辑内容进行处理 
    参  数:$post: 要提交的内容 
    返 回 值:$post: 返回过滤后的内容 
    */ 
    function post_check($post) { 
    if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否为打开 
    $post = addslashes($post); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤 
    } 
    $post = str_replace("_", "\_", $post); // 把 '_'过滤掉 
    $post = str_replace("%", "\%", $post); // 把 '%'过滤掉 
    $post = nl2br($post); // 回车转换 
    $post = htmlspecialchars($post); // html标记转换 
    
    return $post; 
    } 
  • 相关阅读:
    Shell编程之数值运算(二) Theletter
    Shell编程检测某个服务是否运行实例 Theletter
    Shell编程之条件测试与比较(详解) Theletter
    eclipse中svn提交时报Previous operation has not finished; run 'cleanup' if it was interrupted错误的解决方法
    Jsp连接打印机
    Jsp中table导出到excel
    java创建图片验证码
    java利用映射表名称反射创建实体类并赋属性值
    基于方法的LINQ语句
    opencv中cvCreateImage大图片时出错
  • 原文地址:https://www.cnblogs.com/y0umer/p/2772584.html
Copyright © 2020-2023  润新知