php处理sql注入问题 如何防止双重转义

2024-04-28 08:48

本文主要是介绍php处理sql注入问题 如何防止双重转义,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

<?php

//php防注入和XSS攻击通用过滤. 

//by qq:831937

$_GET       && SafeFilter($_GET);

$_POST      && SafeFilter($_POST);

$_COOKIE    && SafeFilter($_COOKIE);

  

function SafeFilter (&$arr)

{  

      if (is_array($arr))

     {

          foreach ($arr as $key => $value)

          {

               if (!is_array($value))

               {

                    if (!get_magic_quotes_gpc())    //不对magic_quotes_gpc转义过的字符使用addslashes(),避免双重转义。

                    {

                         $value    = addslashes($value);    //给单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)加上反斜线转义

                    }

                    $arr[$key]         = htmlspecialchars($value,ENT_QUOTES);   //&,",',> ,< 转为html实体 &amp;,&quot;&#039;,&gt;,&lt;

 

               }

               else

               {

                    SafeFilter($arr[$key]);

               }

          }

     }

}

?>

这篇关于php处理sql注入问题 如何防止双重转义的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/942808

相关文章

栈与队列OJ题【括号适配问题】【用队列实现栈】【用栈实现队列】【设计循环队列】

一.有效的括号 ​​​OJ链接  这一道题我们就可以用栈来解决: 不了解栈的可以看我的上一篇博客。 typedef char STDataType;//用数组来实现栈typedef struct stack{STDataType* a;int capacity;int top;}ST;void STInit(ST* pst){assert(pst);pst->a = NU

【MySQL】常见的数据类型

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:MySQL 目录 👉🏻常见的数据类型bit类型enumset集合查询函数find_ in_ set 👉🏻浮点类型float类型decimal 👉🏻字符串类型charvarchar 👉🏻日期和时间类型 👉🏻常见的数据类型 MySQL 中常见的数据类型包括: 整数类型:

《MySQL必知必会学习笔记》:正则表达式

正则表达式的应用 前面的几节的过滤例子允许用匹配、比较和通配操作符来寻找数据。对于基本的数据过滤,这样就足够了。但是随着过滤条件的复杂性的增加,where子句本身的复杂性也有必要增加。这也就是正则表达式变得有用的地方。 正则表达式是用来匹配文本中特殊的字符集合。 正则表达式不是自己第一次见,在JAVA/C++ 这些语言中,都有正则表达式,不过他们的用途是一样的,都是匹配文本中的字符串。可能具

《MySQL必知必会学习笔记》:通配符的使用

通配符的使用 % _ 前面介绍的所有操作符都是针对已知值进行过滤的。不管是匹配一个还是多个,测试大于还是小于已知值,或者是检查某个范围的值,共同点是过滤中使用的值都是已知的。但是,这种过滤方法并不是任何时候都好用。例如,当我们想搜素 中以 a 开头的名字,应该怎么办呢?这个时候,使用通配符就是一种比较好的选择。下面就开始学习,介绍。 %的使用 %:是用来匹配任意多个字符的。任意多个字符包括0

《MySQL必知必会学习笔记》过滤数据

第六章:过滤数据,即where关键字的使用 在实际过程中,我们并不需要将所有的数据显示出来,只会将我们感兴趣的行数据显示出来,例如:在老师想统计考试成绩在90~100分这个区间的有哪些人?就需要过滤数据。 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。 语法: SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 其中的运算符包括如下(图来源

《MySQL学习笔记》:ORDER BY的使用

第4章 由于在上篇博文中,表user中只有两列(id,name)不方便实验,因此,在进行下面实验之前,我决定先建一个新的table。表的名字就叫student吧,具体如下 创建表 表中有三列,分别为:id,name,score; create table student(id int(10),name varchar(10),score varchar(10)); 其实,在创建表的

《MySQL学习笔记》:查询

第三章 1、当我们不知道可以使用的数据库名有哪些时?可以使用如下命令查看: `SHOW DATABASES;` 结果如下: 2、当我们知道了可以使用的数据库时,例如:mysql、information_schema、test等数据库是,如果我们想使用其中的test数据库,应该如何进入了? 可以使用如下命令:USE test; 3、在我们进去了某个数据库之后,可以用如下的命令

记录一下用git提交代码中问题汇总

先记这点,不断补充中.... clone云仓库代码到本地是,因未进入项目出的一个报错 wangg@DESKTOP-9LUO43A MINGW64 /g/Project/fork_xiaxiaolong$ git config user.name dongfangbbfatal: not in a git directory 【背景说明】 在本地新建了一个文件夹用于clone云上代

单元测试与集成测试:软件质量的双重保障

目录 概述 单元测试 集成测试 单元测试的方法 白盒测试 黑盒测试 白盒测试的方法和用例设计 代码审查 集成测试 单元测试工具 结语         在软件开发中,测试是一个不可或缺的环节,它能够帮助我们发现和修复缺陷,确保软件的质量和可靠性。单元测试和集成测试是两种常见的测试类型,它们分别专注于软件模块和模块间的交互,共同组成了软件测试的重要组成部分。 概述

mysql8.0常用语法

文章目录 开窗函数字段拆分递归关联查询 开窗函数 开窗函数 ,可以按组查询排列数据,且给每一行值都返回指定的聚合值,语法如下: 开窗函数 over([PARTITION BY 分组字段(多个用,链接)] [ORDER BY 排序字段(同前)]) 开窗函数分为两类: 聚合开窗函数:sum,avg,count,max,min等 专用开窗函数:Rank,Dense_Rank,R