问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql注入与转义的php函数代码

发布网友 发布时间:2022-04-22 02:21

我来回答

1个回答

热心网友 时间:2022-04-06 06:11

sql注入:
  正常情况下:
    delete.php?id=3;
    $sql
=
'delete
from
news
where
id
=
'.$_GET['id'];
  恶意情况:
    delete.php?id=3
or
1;
    $sql
=
'delete
from
news
where
id
=
3
or
1';
-------如此执行后,所有的记录将都被删除
   应该采取相关措施。。。比如用之前先判断是否是数字等等。
要使自己相信,从客户端传来的信息永远是不可靠的!!
转义:
  有时候从客户端传来的数据,可能恶意包含些特殊的字符,比如单引号、斜杠等,所以需要转义,转义成普通的字符,此时就要用到string
addslashes
(
string
$str
),这个函数可以对某个变量进行转义。但是,如果对数组里的元素进行转义,就用foreach循环数组,如下:
复制代码
代码如下:
  foreach($_POST
as
$k=>$v)
{

  if(is_string($v))
{

$_POST[$k]
=
addslashes($v);

  }
  }
  但是如果数组中还包含数组,那就要递归进行转义了,此时用到
    array_walk_recursive(array
&$input
,
callback
$funcname
[,
mixed
$userdata
])

  将用户自定义函数
funcname
应用到
array
数组中的每个单元。本函数会递归到更深层的数组中去。典型情况下
funcname
接受两个参数。input
参数的值作为第一个,键名作为第二个。如果提供了可选参数
userdata,将被作为第三个参数传递给
callback
funcname。成功时返回
TRUE,
或者在失败时返回
FALSE
      也就是说:用自定义的函数,至少要能接收两个参数,而addslashes()只能接收一个参数所以自定义一个函数如下:
复制代码
代码如下:
      function
a(&$v,$k){
        $v=addslashes($v);
      }
      array_walk_recursive(&$arr,'a');
系统自动转义:
  PHP中,有一个魔术引号的概念,如何打开?答:在PHP.ini中,magic_quotes_gpc=On;重启apache即可
  魔术引号被打开后,系统会自动对$_GET,$_POST,$_COOKIE数据进行转义,在不知情的情况下,再次进行手动转义的话,就转多了,要想合理的进行转义,就要首先判断,魔术符号是否已经打开了,用magic_quotes_gpc()进行判断,不需要传值,关闭返回0,关闭返回1
复制代码
代码如下:
  if(!get_magic_quotes_gpc())
{
//
如果魔术引号没开

  function
_addslashes(&$v,$k)
{

  
$v
=
addslashes($v);

  
}

  
array_walk_recursive(&$_GET,'_addslashes');

  array_walk_recursive(&$_POST,'_addslashes');

  
array_walk_recursive(&$_COOKIE,'_addslashes');
  }
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 SQL递归操作 sql中的 归并 是什么意思。视图和索引起什么作用? 什么是SQL的归类函数?( ) 日语的平假名和片假名分别在什么地方使用,比如人... PHP +MYsql 中 $sql= 跟$sql.=有什么不同呢.我是新... 小猫的日文片假名怎么写? sql中$的作用 平假名和片假名有什么关系 sql语句中怎么实现递归查询 猫的平假名怎么写 SQL$符号的用法是什么 “猫” 这个词语用日语怎么说? 日语里面宠物名一定要用片假名写吗? 日语五十音图平假名和片假明区别 平假名和片假名可以互换吗~~ “猫、狗”用日语怎么说,求日语音和片假文,及中文谐音 关于日语平假名、片假名和汉字的问题。 日语平假名和片假名是一一对应的么,区别和联系是... 日语的平假名和片假名有什么快速记忆方法吗? 猫儿和耗子的日文和平假名和片假名怎么写? SQL语句中&Sql是什么意思? sql代码问题 请大家看一下这句sql语句有错吗? 请问php中的sqlstr是什么意思,能换成别的词来命名... 用流量刷小红书看不到图片 sql语句问题 SQL语句是什么意思 大红袍肉桂水仙要怎么喝正确? 如何从外观和口感分辨大红袍 水仙 肉桂 先泡肉桂后泡水仙再泡大红袍 b站看别人的收藏夹有记录吗 在b站自己的账号里收藏得视频 别人看得到自己收藏... 加入淘宝金牌卖家的要求是什么? b站私密的收藏夹还会显示吗 b站收藏别人的视频对方会看到视频被谁收藏吗/b站up... 新手开淘宝店怎么才能成为金牌卖家,需要达 拼多多商家金牌卖家的条件 淘宝金牌卖家要交多少保证金 B站收藏夹里的视频显示被UP主删除,怎么知道被删视... 申请加入淘宝金牌卖家需要额外缴纳保证金吗?