文档章节

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

风格时光
 风格时光
发布于 2014/06/09 11:23
字数 1226
阅读 127
收藏 9
点赞 1
评论 0

一、过滤输入、避免输出

有时我们将短语“过滤输入、避免输出”缩写为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

快速有效学习php的5个方法

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

悠闲php ⋅ 2017/01/05 ⋅ 0

PHP-什么是PHP?为什么用PHP?有谁在用PHP?

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

王永濤 ⋅ 2015/12/12 ⋅ 0

10 件在 PHP 7 中不要做的事情

1. 不要使用函数 这一天终于来了,从此你不仅仅“不应该”使用函数。PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的函数,或者更灵活的 PDO 实现。 2. 不要编写垃圾代码...

两味真火 ⋅ 2016/09/18 ⋅ 52

PHP MVC框架--phpSimpleFramework

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

xiaokang9413 ⋅ 2016/06/13 ⋅ 0

设置http编码

原网页 今天我在开发网站时候文件的编码变了,导致好多页面都乱码了 主要是我们现在用visual studio code它默认是utf8的不然乱码 然后更新的时候变的都是乱码了 最先想到的是html中添加 这样...

hongyi1159 ⋅ 2017/04/14 ⋅ 0

浅谈皇冠体育源码搭建接水修复 PHP代码优化最佳实践

编写好的PHP代码是创建快速稳定Web应用的关键一步。从一开始就遵循一些最佳实践技巧将节省后期填坑的时间。 尽可能的使用PHP的内置方法 [皇冠体育源码搭建bbs.yasewl.com请添加链接描述只要可...

超小码农 ⋅ 06/12 ⋅ 0

Seay

Seay 是一个 PHP 代码审计工具。 软件界面: 本人目前就读重庆某软件学院软件测试专业,将于2013年1月底毕业,为了扎实基础,于是有时间就会找一些源码研究,有时候想走走捷径,提高下效率,...

Seay_ ⋅ 2012/10/14 ⋅ 0

学习PHP精粹,编写高效PHP代码之自动测试

如果要制造出完美的产品,必须对它进行全方面检验测试。这里有几种类型的测试,每一种测试都针对应用程序的某个具体方面。 本文将对单元测试、数据库测试、系统测试、负载测试进行介绍。 一、...

风格时光 ⋅ 2014/06/08 ⋅ 0

计算机书籍目录

计算机系统与网络 《图灵的秘密》 《计算机系统概论》 《深入理解Linux内核》 《深入Linux内核架构》 《TCP/IP详解 卷1:协议》 《Linux系统编程(第2版)》 《Linux内核设计与实现(第3版)...

Reborn-D ⋅ 2016/11/01 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

开启Swarm集群以及可视化管理

在搭建的两台coreos服务器上开启swarm集群 前置条件: docker均开启2375端口 同一个局域网内 主服务器上安装Portainer容器 安装Portainer容器执行: docker run -d -p 9000:9000 --restart=a...

ykbj ⋅ 20分钟前 ⋅ 0

单例设计模式

1、单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 2、饿汉式单例类 在这个类被加载时,静态变量instance会被初始化,此时类的私有构造子会被调用 饿汉式是典型...

职业搬砖20年 ⋅ 25分钟前 ⋅ 0

前端基础(四):前端国际规范收集

字数:1142 阅读时间:5分钟 前言 由于前端技术的灵活性和杂乱性,导致网上的许多解决方案不够全面甚至是完全错误,容易起到误导作用。所以,我对搜索到的解决方案往往是存疑态度。那么,如何...

老司机带你撸代码 ⋅ 27分钟前 ⋅ 0

Failed to open/create Network-VirtualBox Host-Only

虚拟机版本 : Oracle Vm VirtualBox 5.2.12 报错时机:开网卡二,重启虚拟机报错 "Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Ada......

p至尊宝 ⋅ 30分钟前 ⋅ 0

三分钟学会如何在函数计算中使用 puppeteer

摘要: 使用 puppeteer 结合函数计算,可以快速的构建弹性的服务完成各种功能,包括:生成网页截图或者 PDF、高级爬虫,可以爬取大量异步渲染内容的网页、模拟键盘输入、表单自动提交、登录网...

阿里云云栖社区 ⋅ 34分钟前 ⋅ 0

springMVC接收表单时 Bean对象有Double Int Char类型的处理

前台ajax提交表单price为double类型 后台controller就介绍不到 400错误 前台 实体类: public class ReleaseMapIconConfig{ private String id; private long maxValue; private long minVal......

废柴 ⋅ 36分钟前 ⋅ 0

ZOOKEEPER安装

工作需要在ubuntu上配置了一个zookeeper集群,有些问题记录下来。 1. zookeeper以来java,所以首先要安装java。但是ubuntu系统有自带的jdk,需要通过命令切换java版本: $ sudo update-alter...

恰东 ⋅ 39分钟前 ⋅ 0

linux 进程地址空间的一步步探究

我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。 那虚拟内存空间...

HelloRookie ⋅ 39分钟前 ⋅ 0

myatis #{}与${}区别及原理

https://blog.csdn.net/wo541075754/article/details/54292751

李道福 ⋅ 42分钟前 ⋅ 0

三分钟学会如何在函数计算中使用 puppeteer

摘要: 使用 puppeteer 结合函数计算,可以快速的构建弹性的服务完成各种功能,包括:生成网页截图或者 PDF、高级爬虫,可以爬取大量异步渲染内容的网页、模拟键盘输入、表单自动提交、登录网...

猫耳m ⋅ 43分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部