文档章节

学习PHP精粹,编写高效PHP代码之安全性

风格时光
 风格时光
发布于 2014/06/09 11:23
字数 1226
阅读 127
收藏 9

一、过滤输入、避免输出

有时我们将短语“过滤输入、避免输出”缩写为FIEO,这已成为PHP应用程序的安全真言。

1、利用ctype进行验证

ctype:http://php.net/ctype

2、利用PCRE(Perl兼容的正则表达式)进行验证

PCRE:http://php.net/pcre

二、跨站脚本

跨站脚本通常简称为XSS,攻击载体以在应用程序输出中由用户提供的变量所在位置为目标,但该变量没有适当地转义。这允许攻击者注入他们选择的一个客户端脚本作为这个变量值的一部分。下面是代码受到这种类型攻击的示例:

<form action="<?php echo $_SERVER['PHP_SELF'];?>">
    <input type="submit" value="submit" /></form>

在线资源:

1、http://ha.ckers.org/xss.html

2、http://shiflett.org/articles/cross-site-scripting

3、http://seancoates.com/blogs/xss-woes

三、伪造跨站脚本

比方说,某个攻击者想从一个流行的在线商店中得到一个昂贵的商品而不用付钱。相反,他们想让一个毫不知情的受害者支付这笔金额。他们选择的武器是:一个伪造的跨站请求。这种攻击类型的目标就是让受害者发送一个请求到某个特定的网站,从而利用受害者在该网站已经注册的身份信息。

在线资源:

1、http://shiflett.org/articles/cross-site-request-forgeries

2、http://shiflett.org/articles/foiling-cross-site-attacks

四、会话固定

如前所示,用户会话是一个经常受到攻击的目标,这种对潜在的受害者和目标网站的识别能力使得一些攻击有机可乘。这里有3种攻击者获得有效会话标示符的方法。按难度顺序排列,它们分别是:

1、固定

2、捕获

3、预测

在线资源:

1、http://shiflett.org/articles/session-fixation

2、http://phpsec.org/projects/guide/4.html#4.1

3、http://www.owasp.org/index.php/Session_fixation

五、会话劫持

会话劫持这个词有些难懂,因为我们用它描述两件事情:

1、导致攻击者得以进入网站上与受害者账户相关联的会话,而不管他如何获取访问权的任何类型的攻击。

2、需要捕获一个已建立的会话标识符,而不是通过固定技术或预测取得会话标识符的特定类型攻击。

在线资源:

1、http://shiflett.org/articles/session-hijacking

2、http://shiflett.org/articles/the-truth-about-sessions

3、http://phpsec.org/projects/guide/4.html#4.2

六、SQL注入

这种类型攻击的性质与前面所讲过的“过滤输入、避免输出”有关。基本上,SQL注入非常类似于XSS,在XSS中,攻击对象使得应用程序认为用户输入的含义超过了它所代表的数据。XSS的目的是让那些输入作为客户端代码而被执行;而SQL注入的目的是让这些输入被认为是一个SQL查询,或者是查询的一部分。

在线资源:

1、http://shiflett.org/articles/sql-injection

2、http://phpsec.org/projects/guide/3.html#3.2

七、储存密码

在Web应用程序能有效处理数据库查询中用户输入的情况下,攻击者需使用更广泛的手段访问用户账户。一般来说,其中也包括获取受害者的访问凭证来访问他们的数据。

其中一个实现方法便是强行进入Web应用程序使用的数据库服务器。根据你使用何种数据库、数据库如何配置等相关信息,攻击者有很多的侵入方法。

在线资源:

1、http://php.net/mcrypt

2、http://www.openwall.com/phpass/

3、http://codahale.com/how-to-safely-store-a-password/

八、暴力破解攻击

对攻击者而言,侵入数据库或解密加密的密码技术门槛过高。在这种情况下,攻击者可能尝试使用一个脚本,模拟一个正常用户使用浏览器登录到Web应用程序的HTTP请求,他们用给定用户名和随机密码尝试登入,直到找到正确的密码。这种方式成为“暴力破解攻击”。

在线资源:

1、https://www.owasp.org/index.php/Brute_force_attack

2、http://en.wikipedia.org/wiki/Brute-force_attack

九、SSL

在线资源:

1、http://arst.ch/bgm

2、http://www.owasp.org/index.php/SSL_Best_Practices 

 

PHP安全相关资源:

1、http://www.php.net/manual/en/security.php  PHP手册中有关于各种安全问题的章节

2、http://phpsecurity.org/  这是《Essential PHP Security》一书的相关网站

3、http://phpsec.org/projects/guide/  PHP安全协会的项目之一就是《PHP Security Guide》

4、http://www.enigmagroup.org/  该网站提供了针对Web应用程序和论坛的许多潜在攻击载体的相关信息和实用练习。

© 著作权归作者所有

共有 人打赏支持
风格时光
粉丝 0
博文 4
码字总数 4542
作品 0
淮南
程序员
学习PHP精粹,编写高效PHP代码之质量保证

一、使用静态分析工具测量质量 我们用静态分析测量代码而不运行它。实际上,我们将这些工具用于评估代码、读取文件、衡量它所写的要素。使用这些工具,可以帮助我们对代码库有一个完整的层次...

风格时光
2014/06/08
0
0
快速有效学习php的5个方法

  php是当今最广泛使用的语言,它普遍用于开发基于Web的应用程序和网站。 同时它是最容易学习和使用的。 有很多免费的教程网站,可以轻松地学习PHP。 还有一些网站工具的使用可以加快你的学...

悠闲php
2017/01/05
0
0
33个超级有用必须要收藏的PHP代码样例

作为一个正常的程序员,会好几种语言是十分正常的, 相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的, 即使你没用开发过大型软件项目,也一定多少了解它的语法。...

代码技巧
2015/09/15
0
0
PHP MVC框架--phpSimpleFramework

SimpleFramework 是一个核心代码小于100K的PHP MVC框架,性能高效,层次清晰,易于上手。 其特点是配置简单,不用约束任何规则,学习成本较低,而且容易扩展,安全性高,非常适合于中小型的项...

xiaokang9413
2016/06/13
491
0
PHP-什么是PHP?为什么用PHP?有谁在用PHP?

什么是 PHP? PHP 是一种脚本语言, "PHP Hypertext Preprocessor" 的首字母缩略词PHP 语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域. PHP 是由Rasmus Le...

王永濤
2015/12/12
192
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
30分钟前
1
0
我为什么用GO语言来做区块链?

Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(b...

HiBlock
36分钟前
1
0
大数据学习脑图以及入门教程!

近些年,大数据的火热可谓是技术人都知道啊,很多人呢,也想学习大数据相关,所以,这里分享几个大数据脑图,希望可以让你清楚明白从哪里入门大数据,知道该学习以及掌握哪些知识点; 大数据...

董黎明
今天
1
0
聊聊redis的监控工具

序 本文主要研究一下redis的监控工具 redis-stat redis-stat是一个比较有名的redis指标可视化的监控工具,采用ruby开发,基于redis的info命令来统计,不影响redis性能。 docker运行 docker r...

go4it
今天
2
0
TypeScript基础入门之高级类型的索引类型(Index types)

转发 TypeScript基础入门之高级类型的索引类型(Index types) 高级类型 索引类型(Index types) 使用索引类型,编译器就能够检查使用了动态属性名的代码。 例如,一个常见的JavaScript模式是从...

durban
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部