HTTP攻击与防范--PHP安全配置

1什么是安全性

所谓安全性就是保护web应用程序与网页不会受到黑客的攻击。有些黑客纯粹是为了好玩而入侵他人的电脑,但有更多的黑客费劲心思要窃取他人电脑中的机密文件,甚至使整台电脑瘫痪来达到他的目的。现象在网上有很多可以让黑客使用的软件,这些软件多半是免费的而且简单好用,所以一般人要攻击您的电脑,并不是一件非常困难的事情。关键是您对电脑进行了什么样的保护?如果只是安装了查毒软件或者防火墙以为平安无事了,那么您对安全性的真正意义可以说是完全不了解。

2 register global

从PHP4.2.0开始,php.ini的register_global选项的默认值预设为Off。当register_globals设定为On时,您的程序将可以接收来自服务器中的各种环境变量,包括表单提交的变量,而且由于PHP不必事先初始化变量的值,从而导致很大的安全隐患.例如HTML表单的请求变量。由于PHP不需要事先初始化变量的值,这就会更容易写出不安全的代码。这是个很艰难的抉择,但PHP社区还是决定默认关闭此选项。当打开时,人们使用变量时确实不知道变量是哪里来的,只能想当然。但是register_globals的关闭改变了这种代码内部变量和客户端发送的变量混杂在一起的糟糕情况。

3 安全模式

安全模式( safe_mode)是PHP用来限制文档的存取、限制环境变量的存取,以及控制外部程序的执行。

由于网站服务器是以单一系统使用者的模式在运行,因此这个系统的使用者账号必须能够读取每个使用者的文档。这表示在网站服务器上执行的任何代码文档都能够存取每个使用者的文档。PHP的安全模式在多用户的系统上设置一些限制选项来保障程序的安全运行。安全模式只能限制PHP的文档,但是不能限制PHP执行的外部应用程序。因此将可执行的应用程序放置在一个安全的文件夹内,不要让外部用户执行。 启动PHP的安全模式,将php.ini文件的safe_mode选项(directive)设置为On:

safe_mode = On

事例1:

test.php内容如下:

<?php
    if($authorized){
        echo "变量赋值";
    }else{
        echo "变量没有赋值";
    }

当php.ini中的register_globals=Off时

访问网址:http://localhost/test.php?authorized=1

输出结果为:

变量没有赋值。

当php.ini中的register_globals=On时

攻击:

变量未初始化,可以通过url对变量赋值

输出结果为

变量赋值

防护:

变量初始化,阻止通过url对变量赋值进行攻击。

需将代码改为:

<?php
    $authorized=false;
    if($authorized){
        echo "变量赋值";
    }else{
        echo "变量没有赋值";
    }

事例2:

例如:test.php内容如下:

<?php
if(isset($_SESSION['username'])){
        echo "访问者:".$_SESSION['username'];
}else{
        echo "访问者尚未登陆";
}

当访问http://localhost/test.php时,

输出:访问者尚未登陆

攻击:

在网址后面追加?_SESSION[username]=admin

即:http://localhost/test.php?_SESSION[username]=admin

输出:访问者:admin

防护:

session_start()开启session,获取session中的值,阻止通过url对session变量进行注入攻击。

代码改为

<?php
session_start();
if(isset($_SESSION['username'])){
        echo "访问者:".$_SESSION['username'];
}else{
        echo "访问者尚未登陆";
}

事例3:

当php.ini中的allow_url_fopen = On时

demo.php中的内容如下:

<?php
@include "$path";
if(!isset($path)){
        echo "文件没有被调用";
}

test.php中的内容为:

<?php
echo "this is test.php。文件被调用。";

当访问网址:

http://localhost/demo.php时

输出:文件没有被调用。

攻击:

在链接后面拼接?path=test.php

即:访问http://localhost/demo.php?path=test.php

输出:this
is test.php。文件被调用。

保护:

同上对path变量初始化。

注:

可以调用ini_get_all函数来显示 PHP的设定值。

例如:

<?php
        echo "<pre>";
        print_r(ini_get_all());
        echo "</pre>";

运行结果部分如下:

可以通过

<?php
ini_set("allow_url_fopen",1);

在php文件中修改配置

时间: 2024-10-03 14:00:57

HTTP攻击与防范--PHP安全配置的相关文章

协议欺骗攻击及其防范措施

许多应用程序认为若数据包可以使其自身沿着路由到达目的地,并且应答包也可回到源地,那么源IP地址一定是有效的,而这正是使源IP地址欺骗攻击成为可能的一个重要前提. 假设同一网段内有两台主机A和B,另一网段内有主机X.B 授予A某些特权.X 为获得与A相同的特权,所做欺骗攻击如下:首先,X冒充A,向主机 B发送一个带有随机序列号的SYN包.主机B响应,回送一个应答包给A,该应答号等于原序列号加1. 然而,此时主机A已被主机X利用拒绝服务攻击 "淹没"了,导致主机A服务失效.结果,主机A将B

Web攻防系列教程之跨站脚本攻击和防范技巧详解

Web攻防系列教程之跨站脚本攻击和防范技巧详解[XSS] 收藏:http://www.rising.com.cn/newsletter/news/2012-04-25/11387.html 来源:瑞星 2012-04-25 14:33:46 摘要:XSS跨站脚本攻击一直都被认为是客户端Web安全中最主流的攻击方式.因为Web环境的复杂性 以及XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什么,又该如何进行有效的防范呢?本文对此进行了 有针对性的具体

XSS攻击与防范

1.什么是XSS攻击 XSS攻击,跨站脚本攻击 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的. xss攻击,就是给form表单的项目里边填写一些html.css.js等脚本代码,这些代码就会被收集到数据库里边,当对应的内容展示的时

DDOS学习笔记(《破坏之王-DDOS攻击与防范深度剖析》)

最近花了点时间把<破坏之王-DDOS攻击与防范深度剖析>看了一遍,坦白来说,这本书比较浅显,可以说是入门书,当然对于我这种对DDOS一知半解的人来说,也是一本不错的书,起码我学到了一些东西. DDOS是分布式拒绝服务(Distributed Denial of Service, DDOS)的简写,从名字可以看出,其攻击是分布式的,即多台(可能上万台,甚至更多)电脑同时对目标进行攻击,攻击的目的是让目标无法提供服务.从根本上来说,让目标无法提供服务,办法有很多,比如侵入目标服务器,删除关键服务或

Cookie攻击和防范链接整理

cookie攻击:http://wenku.baidu.com/link?url=i87lAE4bDM-Gw_kpgROhAonTQZtSTGczXvxWdtl8j4rRt20Nmox5enbajpG__8uHWDoCmA_FSO0xP9VQBWoVCnCqNrUhkZFq0A5ACvJxDTa 解析Cookie欺骗实现过程及具体应用:http://wenku.baidu.com/view/d0eee87101f69e31433294ec.html Cookies攻击与防范:http://wen

DNS常见攻击与防范

DNS常见攻击与防范 转自:http://www.williamlong.info/archives/3813.html 日期:2015-7-10 随着网络的逐步普及,网络安全已成为INTERNET路上事实上的焦点,它关系着INTERNET的进一步发展和普及,甚至关系着INTERNET的生存.可喜的是我们那些互联网专家们并没有令广大INTERNET用户失望,网络安全技术也不断出现,使广大网民和企业有了更多的放心,下面就网络安全中的主要技术作一简介,希望能为网民和企业在网络安全方面提供一个网络安全

【系统安全性】二、Web攻击与防范

二.Web攻击与防范 1.XSS攻击 跨站脚本攻击(Cross Site Scripting),因为简写CSS,与层叠样式表(Cascading Style Sheets)有歧义,所以取名XSS 原理:在网页中嵌入恶意脚本程序,在客户端浏览器执行(如用户输入数据转换成代码执行) 防范:输入数据HTML转义处理(主流框架默认支持) 2.注入攻击 原理:SQL伪装成HTTP请求参数 例如一个登录操作,输入帐号密码 假设后台的Sql是这样拼装的:Select * from user where use

[推荐]DDOS攻击与防范知识介绍

DDOS攻防体系建设v0.2(淘宝-林晓曦)     http://wenku.baidu.com/view/39549a11a8114431b90dd866.html 阿里云安全白皮书V1.2(2014年1月)         http://wenku.baidu.com/view/bbec02673968011ca2009137.html DDoS攻击防御新思考        http://wenku.baidu.com/view/417a971e650e52ea5518983f.html

DDoS攻击与防范策略

DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大.最难防御的攻击之一. 按照发起的方式,DDoS可以简单分为三类. 第一类以力取胜 海量数据包从互联网的各个角落蜂拥而来,堵塞IDC入口,让各种强大的硬件防御系统.快速高效的应急流程无用武之地.这种类型的攻击典型代表是ICMP Flood和UDP Flood,现在已不常见. 第二类以巧取胜 灵动而难以察觉,每隔几分钟发一个包甚至只需要一