首页 > 编程语言 >PHP安全笔记

PHP安全笔记

时间:2023-02-07 13:01:59浏览次数:48  
标签:magic quotes exec 笔记 echo 安全 output PHP


1、           Magic Quotes选项

PHP.INI中中有三个以magic_quotes_开头的选项

magic_quotes_gpc如果是On的话,就会自动用‘\’转义从GET,POST,COOKIE来的数据,这是为什么我们想在URL中输入’ ; show tables;–有时候失败的原因,因为被转义了呗

magic_quotes_runtime如果是on,会自动转义来自数据库或字符串中数据magic_quotes_sybase会用单引号代替反斜杠来转义

我们可以使用addslashes函数来达到同样目的,不过有时候得用stripslashes来取消转义哦

2、           PHP的命令执行函数
a)      system:执行一个外部的应用程序并显示输出的结果
b)      exec:执行一个外部的应用程序
c)       passthru:执行一个UNIX系统命令并返回原始的输出
d)      shell_exec:执行shell命令并返回输出的字符串
e)      ““运算符:与shell_exec功能相同

system举例-列出C盘内容:


<?php

echo "<pre>" ;

$last_line = system ( "dir c:" , $retval ) ;

echo "</pre>" ;

echo "命令输出的最后一行:" . $last_line . "<br />" ;

echo "命令的返回值:" . $retval ;

?>

 

exec执行外部应用程序-列出C盘内容:

<?php

$output = array ( ) ;

echo "<pre>" ;

$last_line = exec ( "dir c:" , $output ) ;

echo "</pre>" ;

while ( list ( $key , $value ) = each ( $output ) )

{

echo $value . "<br />" ;

}

echo "命令输出的最后一行:" . $last_line . "<br />" ;
echo "命令的返回值:" . $retval ;

?>

 

string shell_exec( string cmd )

 
echo "<pre>" ;

$output = shell_exec ( "dir c:" ) ;

echo "</pre>" ;

echo nl2br ( $output ) . "<br />" ;

?>


 

<?php

echo "<pre>" ;

$output = ` dir c : ` ;

echo "</pre>" ;

echo nl2br ( $output ) . "<br />" ;

?>
3、           EVAL函数

下面的例子我换参数为system(“dir c:”);,执行失败了,是因为我的php.ini中 ;

Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On
这句话导致system括号里的双引号被转义,导致执行失败


<?php

$myvar = "varname" ;


if ( isset ( $_GET [ "arg" ] ) )

{

$arg = $_GET [ "arg" ] ;

//arg参数可以替换成system造成命令注入

eval( "\$myvar = $arg;" ) ; //eval 能够执行里面的字符串的PHP代码

echo "\$myvar = " . $myvar ;


}

?>


 

4、           防范命令注入和EVAL注入的方法

使用函数 escateshellarg 函数过滤传来的字符串参数即可

5、           客户端脚-SQL Insertion

客户端脚本,就是用户在留言板框内输入js脚本,然后别人就中招了
解决方法就是HTML输出过滤
在PHP中有两种方法可以进行HTML输出过滤:

l  使用strip_tags来删除字符串中的PHP和HTML标签

l  使用 htmlspecialchars函数来讲特殊字符转换成HTML编码,而不是执行,这是解决该问题的最佳方法

l  跨网站脚本XSS解决方法

很简单,仍然使用htmlspecialchars将来自URL的参数过滤一下即可,这样不让来自URL的js代码执行就OK

如果在表单中用的是action=$_SERVER[‘PHP_SELF’]或者action=$SCRIPT_NAME的时候,会被XSS注入,解决方法:

在action后面的URL加上htmlspecialchars过滤
action写成空,即action=”默认是提交到自身页面的,所以没必要,该情况用于表单是自身处理的情况

6、           SQL注入的防御方法:
a)      如果确定是整数,用intval过滤参数
b)      如果确定是浮点数,用floatval或doubleval函数过滤
c)       如果是字符串,则用addslashes函数将单引号,双引号,反斜杠,NULL等字符转义

请注意,PHP.INI中的magic_quotes_gpc如果为ON,那么字符串中引号等会被自动加上反斜杠转义,那么如果我们再加上addslashes函数就会有了两个反斜杠,使得SQL语句中出现了一个反斜杠后被执行,会出错误的。

解决方法,使用get_magic_quotes_gpc判断是不是将该值设置为ON了,如果是ON返回1,如果offf返回0

标签:magic,quotes,exec,笔记,echo,安全,output,PHP
From: https://blog.51cto.com/peishuai/6042007

相关文章

  • 17个非常有用的PHP类和库
    本文转自互联网。在我们日常程序开发当中,使用一个好的而且成熟的PHP类,可以减少很多手工编码,通过这些通用API的使用,可以大大减轻我们的开发工作。今天,我们将重点介绍了一些很......
  • PHP字符串函数、知识要点总结
    主要包括以下方面:字符串的格式化字符串的连接与分割字符串的比较使用字符串函数匹配和替换子字符串使用正则表达式(下一篇文章专门总结)1、字符串的格式化:chop(rtrim)、ltrim......
  • 数据采集必备知识-php计划任务的实现
    站点如果做的多了,难免要发些伪原创的文章,文章的来源必然来源于网络采集,对于采集这里不详述,我自己用的是”SimpleHTMLDOM”,见我另一篇关于他的介绍:​​数据采集利器-PHP用......
  • PHP获取IP的多种方式解析
    PHP获取IP的方法有许多种,我们今天向大家总结了六种方法,希望通过对这六种方法的学习,能够加深我们对PHP语言的进一步了解,巩固我们所掌握的知识。PHP获取IP方法一:<?phpecho"<......
  • Apache网页优化与安全
    Apache网页优化与安全......
  • 产品力狂飙|Coremail荣登第五版《CCSIP2022中国网络安全行业全景册》
    2023年2月1日,FreeBuf咨询正式发布 《CCSIP(ChinaCyberSecurityPanorama)2022中国网络安全行业全景册(第五版)》。第五版全景图仍将以PDR网络安全模型为基础,并参考IPDRR安全......
  • 亚马逊灯串UL588安全标准测试
    亚马逊UL标准测试认证是我公司的优势产品,服务周到,速度快,周期短。欢迎来电咨询国内做亚马逊UL检测报告。UL测试报告需要多少钱?具体费用要看具体产品功能,不同产品的测试项目不......
  • PHPMyWind支持ppt粘贴
    ​ 自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了。一般情况下我们将Word内容粘贴到Web编辑......
  • laravel框架php artisan vendor:publish的作用
     场景在使用laravel框架的时候phpartisanvendor:publish#可以把对应的服务提供者的资源文件,复制到指定的路径下。 一般用法phpartisanvendor:publish--pr......
  • 学编程PHP与Python都有哪些区别?
    对于学习编程的小伙伴来说,不管是PHP还是python或者是java都是一门不错的编程语言,根据不同的应用场景选择适合的语言编程至关重要。那么学编程用PHP与Python语言都有哪些区......