`
hardy136
  • 浏览: 11943 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

PHP防SQL注入

阅读更多

 一般性的防注入,只要使用php的 addslashes 函数就可以了。

$_POST = sql_injection($_POST);   
$_GET = sql_injection($_GET);   

function sql_injection($content) {   
   if (!get_magic_quotes_gpc()) {   
      if (is_array($content)) {   
        foreach ($content as $key=>$value) {   
           $content[$key] = addslashes($value);   
        }   
      } else {   
        addslashes($content);   
      }   
   }   
   return $content;   
} 

  

/**    
 * 函数名称:inject_check()   
 * 函数作用:检测提交的值是不是含有SQL注射的字符,防止注射,保护服务器安全   
 * 参  数:$sql_str: 提交的变量    
 * 返 回 值:返回检测结果,ture or false    
 */     
function inject_check($sql_str) {       
  return eregi('select|insert|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;       
 } 
 
分享到:
评论
1 楼 月影无痕 2013-06-17  
这种做法,并不能完全阻止SQL注入,你的文章存在误导读者之问题

在php 5+时代,强烈建议使用pdo参数化查询,可从根本上杜绝SQL注入.

你的做法,相当于开启了magic_quotes_gcp, 这个功能php5.4中已经去掉了,php 5.3中将是一个警告提示

你的代码在php 5.3中会产生一个警告提示, 而在php5.4中无法运行.

php 5.3与php 5.2性能差异巨大,该是时间考虑php 5.3了.

官方给出的 5.2和5.3性能对比:

http://www.php.net/manual/zh/features.gc.performance-considerations.php

相关推荐

    360提供的php防sql注入代码修改类

    总的来说,"360提供的php防sql注入代码修改类"是一个实用的工具,旨在帮助开发者提高PHP应用的安全性,减少SQL注入和HTTP跨站攻击的风险。通过理解并应用这个类,我们可以更好地保护我们的网站和用户数据。在实践中...

    php防SQL注入的一个类

    下面我们将深入探讨这个"php防SQL注入的一个类"及其相关知识点。 首先,PHP是一种广泛使用的服务器端脚本语言,尤其适用于Web开发。它与MySQL等数据库系统配合良好,但如果不正确处理用户输入,就容易遭受SQL注入...

    php防SQL注入的一个类.zip

    为了解决这个问题,PHP开发者通常会使用各种方法来防止SQL注入,其中之一就是使用专门的防SQL注入类。这个"php防SQL注入的一个类.zip"文件显然提供了一个这样的解决方案。 该类的主要目标是检查用户输入的数据,...

    一种利用PHP防御SQL注入攻击的方法.pdf

    标题:一种利用PHP防御SQL注入攻击的方法 知识点: 1. PHP语言与Web应用程序:PHP(Hypertext Preprocessor)是一种广泛用于Web应用开发的编程语言,它以其开源、跨平台和服务器端脚本语言的特点在Web开发领域占有...

    360提供的php防sql注入代码修改类.zip

    从360提供的PHP防SQL注入代码改成的一个类,从SQL注入和HTTP跨站两个方面入手,解决网站存在安全风险的问题,希望对朋友们有所帮助。如果小伙伴们有更好的解决方案,欢迎发布过来大家一起学习交流。

    防SQL注入的php代码

    防SQL注入的php,通用防注入类

    防止sql注入工具类l

    3. **使用安全库或工具类**:这里提到的“防止SQL注入工具类”可能是指一个专门用于处理SQL注入的PHP库。这个工具类可能提供了自动转义或参数化查询的功能,比如`mysqli_real_escape_string`函数,或者更高级的ORM...

    sql注入攻击防范解析

    SQL注入攻击是网络安全领域中一个严重的问题,它发生在应用程序未能充分验证或清理用户输入的数据时。当恶意用户通过输入特定的SQL代码,使得数据库执行非预期的操作,就可能发生SQL注入。这种攻击可能导致数据泄露...

    PHP中全面阻止SQL注入式攻击

    ### PHP中全面阻止SQL注入式攻击 在当前的网络环境中,Web应用程序的安全性变得尤为重要,而其中SQL注入攻击是常见的安全威胁之一。SQL注入是指攻击者通过将恶意SQL代码插入到应用程序的输入字段中,从而控制数据库...

    sql注入讲解ppt.pptx

    SQL 注入基础知识点总结 SQL 注入是指 web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法...

    第07篇:Bypass 360主机卫士SQL注入防御(多姿势)1

    WAF通常会忽略对静态资源如.js、.jpg、.png等文件的检测,攻击者可以将恶意SQL注入到这些静态资源的URL中,如`/test.php/1.png?id=1 union select 1,2,schema_name from information_schema.SCHEMATA`,以规避检测。...

    PHP+Mysql 带SQL注入源码 下载

    这个"PHP+Mysql 带SQL注入源码 下载"的主题涉及到一个常见的安全问题——SQL注入,以及如何处理和预防这种情况。下面将详细讨论SQL注入、PHP与MySQL的结合使用,以及如何防范SQL注入。 **SQL注入** SQL注入是一种...

    php168sql注入漏洞

    ### PHP168 SQL注入漏洞分析与利用 #### 背景介绍 PHP168是一款基于PHP语言开发的内容管理系统,被广泛应用于政府网站、企业官网等场景中。然而,在某些版本中,PHP168存在着严重的SQL注入漏洞,攻击者可以利用此...

    JS代码防止SQL注入的方法(超简单)

    在这个PHP示例中,我们使用了预处理语句和绑定参数的方式,这样即使攻击者在输入中尝试插入SQL代码,由于这些代码不会被当作SQL语句的一部分执行,因此能够有效地防止SQL注入。 总结起来,防止SQL注入需要前端与...

    SQL 注入天书.pdf

    SQL注入是一种常见的网络安全漏洞,发生在应用程序使用用户输入的SQL代码直接构建数据库查询时。当攻击者能够通过输入恶意SQL语句来控制或篡改数据库查询,他们就能获取敏感信息、修改数据甚至完全控制系统。《SQL...

    SQL注入全面讲解技术文档

    PHP应用同样面临SQL注入问题,开发者应使用预处理语句(如PDO或MySQLi的prepare/execute)来防止注入,并避免使用`eval()`等危险函数。 5. 检测和防御SQL注入和跨站脚本攻击: - 使用自动化工具进行扫描,如...

    SQL注入攻击与防御

    SQL注入是Internet上最危险、最有名的安全漏洞之一,本书是目前唯一一本专门致力于讲解SQL威胁的图书。本书作者均是专门研究SQL注入的安全专家,他们集众家之长,对应用程序的基本编码和升级维护进行全面跟踪,详细...

    SQL注入以及防注入代码

    ### SQL注入及其防范措施 #### 一、SQL注入概述 SQL注入是一种常见的网络安全攻击手段,攻击者通过在应用程序中插入恶意SQL语句来控制数据库服务器执行非授权操作。这种攻击方式利用了应用程序对用户输入数据缺乏...

    web安全性测试之sql注入入门篇

    PHP SQL 注入是指在 PHP 应用程序中使用的 SQL 注入攻击。PHP SQL 注入可以分为两种类型: * PHP+MySQL:使用 MySQL 数据库的 PHP 应用程序 * PHP+PostgreSQL:使用 PostgreSQL 数据库的 PHP 应用程序 SQL 注入的...

    CmsEasy crossall_act.php SQL注入漏洞.md

    根据提供的文件信息,CmsEasy的crossall_act.php文件中存在一个SQL注入漏洞,这是在IT行业中常见的安全漏洞类型。SQL注入攻击者可以通过这个漏洞在数据库中执行恶意的SQL语句,从而对网站数据库进行非授权的操作。 ...

Global site tag (gtag.js) - Google Analytics