我们已经准备好了,你呢?

2026我们与您携手共赢,为您的企业形象保驾护航!

几个重要的php.ini选项

PHP版本需达到4.2.0及以上,此时php.ini中相关选项的默认状态被设置为关闭。然而,一旦将其设置为开启,程序便能够接收服务器传递的各种环境变量,这其中包括表单提交的数据。值得注意的是,PHP在此情况下无需预先设定变量的值,这一特性虽然提高了效率,但也带来了显著的安全风险。

例1:

使用括号内的函数来核实用户的权限级别,若用户身份为管理员,则将变量$设为真。随后,程序将检测该变量是否保持为真状态,并据此执行一系列管理任务。

//ex1.php

if (())

$ = true;

if ($)

();

这段代码未对变量$进行初始化,若其值为On,则无需经过()的验证即可直接进行提交。

例2:

//ex2.php

if (isset($[""]))

();

else

echo "您尚未登录!";

当=On时,我们提交[]=dodo,就具有了此用户的权限

因此,无论出于何种原因,我们都应牢记,对所传输的每份数据必须进行详尽的核实,同时确保所有变量都已完成初始化。

在安全模式下,PHP能够对文档的访问进行限制,同时管控对环境变量的访问,并对外部程序的运行加以控制。若要激活安全模式,务必在php.ini配置文件中将相关选项设置为开启状态。

1.限制文件存取

r = "/path1:/path2:/path3"

不同的文件夹用冒号隔开

2.限制环境变量的存取

=

设定PHP程序所能修改的环境变量前缀,例如:使用PHP_作为前缀,若此选项留空,则PHP将能够修改所有环境变量。

=

用来指定php程序不可改变的环境变量的前缀

3.限制外部程序的执行

=

此选项所指定的文件夹路径会对.exec.popen.产生影响,但不会对和空格字符产生影响。

=

不同的函数名称用逗号隔开,此选项不受安全模式影响

magic

此功能旨在自动对php程序的输入数据进行转义处理,包括将所有单引号、双引号、反斜杠以及空字符均自动添加反斜杠符号以实现转义。

将“On”设置为魔法值,此操作将作用于HTTP请求(包括GET和POST等方法)的数据处理。

开发者能够运用此方法对提交的HTTP请求内容进行转义处理,亦或执行数据删除的转义操作。

命令注入攻击

PHP中可以使用下列5个函数来执行外部的应用程序或函数

.exec...``(与功能相同)

函数原型

( , int &)

要执行的命令

存放执行命令的执行后的状态值

exec ( , array &, int &)

要执行的命令

获得执行命令输出的每一行字符串

存放执行命令后的状态值

void ( , int &)

要执行的命令

存放执行命令后的状态值

( )

要执行的命令

漏洞实例

例1:

//ex1.php

$dir = $_GET["dir"];

if (isset($dir))

echo "

";

("ls -al ".$dir);

echo "

";

我们提交| cat /etc/

提交完毕后,指令转变为执行“ls -al”并输出结果,随后通过管道符“|”将输出传递给“cat /etc/”命令。

eval注入攻击

eval函数将输入的字符串参数当作PHP程序代码来执行

函数原型:

在执行混合评估函数时,需要注意的是,eval注入通常会在攻击者能够操控输入字符串的情况下发生。

//ex2.php

$var = "var";

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

$arg = $_GET["arg"];

eval("$var = $arg;");

echo "$var =".$var;

当我们提交 ();漏洞就产生了

动态函数

func A()

();

func B()

();

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

$ = $_GET["func"];

echo $();

程序员原意是想动态调用A和B函数,那我们提交 漏洞产生

防范方法

1.尽量不要执行外部命令

2.使用自定义函数或函数库来替代外部命令的功能

3.使用函数来处理命令参数

4.使用指定可执行文件的路径

该函数能够将触发参数或命令终止的符号进行转义处理,将单引号“'”更改为“'”,双引号“""”则替换为“""”,而分号“;”则被替换为“;”。

用指定可执行文件的路径,可以把会使用的命令提前放入此路径内

= On

r= /usr/local/php/bin/

客户端脚本植入

客户端脚本嵌入,即把可执行的代码片段插入至表单、图片、动画或超链接文字等元素之中。用户一旦激活这些元素,嵌入的脚本便会自动启动,随后展开攻击行为。

可以被用作脚本植入的HTML标签一般包括以下几种:

1. 无限弹框

插入 跳转钓鱼页面

或者使用其他自行构造的js代码进行攻击

防范的方法

一般使用函数来将特殊字符转换成HTML编码

函数原型

( , int , )

是要编码的字符串

可选参数中,数值可以是逗号,用以表示默认值。此参数设定了转换双引号与否,若设置为逗号,则仅转换双引号;若设置为逗号和单引号,则双引号和单引号均需转换;若设置为逗号和单引号,则双引号和单引号均不进行转换。

可选,表示使用的字符集

函数会将下列特殊字符转换成html编码:

& ----> &

" ----> "

' ----> '

< ----> <

> ----> >

把show.php的第98行改成

然后再查看插入js的漏洞页面

xss跨站脚本攻击

XSS,即跨站脚本攻击,这一术语与CSS(样式表)相区分,故简称为XSS。

攻击者常利用跨站脚本技术窃取网站用户及个人资料,若这些信息落入其手,他们便能冒充该用户登录网站,进而获取该用户的权限。

跨站脚本攻击的一般步骤:

1.攻击者以某种方式发送xss的http链接给目标用户

目标用户访问了该网站并成功登录,在此过程中,他们不小心点击了攻击者发送的恶意XSS链接。

3.网站执行了此xss攻击脚本

目标用户点击链接后,页面转至攻击者的网站,随后,攻击者便获取了目标用户的相关信息。

5.攻击者使用目标用户的信息登录网站,完成攻击

当有存在跨站漏洞的程序出现的时候,攻击者可以构造类似

key= ,诱骗用户点击后,可以获取用户值

防范方法:

利用函数将特殊字符转换成HTML编码

函数原型

( , int , )

是要编码的字符串

可选,值可为、、,默认值,表示只转换双引号不

将单引号转换为双引号,双引号保持不变。

可选,表示使用的字符集

函数会将下列特殊字符转换成html编码:

& ----> &

" ----> "

' ----> '

< ----> <

> ----> >

$[""]变量的跨站

在某个表单中,如果提交参数给自己,会用这样的语句

" ="POST">

......

$[""]变量的值为当前页面名称

例:

get.php中上述的表单

那么我们提交

">

那么表单变成

" ="POST">

跨站脚本被插进去了

采取的防护手段依旧涉及对输出变量的过滤,亦或是将表单数据提交至同一文件中处理。

这样直接避免了$[""]变量被跨站

SQL注入攻击

SQL注入,即攻击者通过在表单中输入特制的SQL指令,篡改原本的查询语句。若网站程序未对输入数据进行严格验证,此类攻击便可能得逞。

SQL注入攻击的一般步骤:

1.攻击者访问有SQL注入漏洞的网站,寻找注入点

攻击者构建了注入语句,该语句与程序内原有的SQL语句相融合,从而生成了新的SQL指令。

3.新的sql语句被提交到数据库中进行处理

4.数据库执行了新的SQL语句,引发SQL注入攻击

跨网站请求伪造

跨站请求伪造(CSRF),又称XSRF,指的是攻击者通过伪造目标用户的HTTP请求,将此请求发送至存在CSRF漏洞的网站,网站在执行该请求后,便触发了跨站请求伪造攻击。攻击者通过隐蔽的HTTP连接,使目标用户在未察觉的情况下点击链接,由于用户是主动点击且身份合法,拥有相应权限,因此用户便能在网站内执行特定的HTTP请求,进而实现攻击者的恶意目的。

在某个购物网站上选购商品时,通过使用item参数来指定所需购买的特定物品,利用num参数来设定购买的数量,然而,若攻击者以隐蔽手段向目标用户发送含有恶意链接的……

那么如果目标用户不小心点击以后,购买的数量就成了1000个

二维码
扫一扫在手机端查看

本文链接:https://www.by928.com/shan-xi/9125.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线