推荐一本PHP程序猿都应该拜读的书


Posted in PHP onDecember 31, 2014

PHP这几年口碑很差。关于它的“糟糕设计的汇总”和语法上的矛盾有着大量的讨论,但是主要的抱怨通常是安全。很多PHP站点分分钟被黑掉,甚至一些有经验的、有见识的程序员会说,这门语言本身是不安全的。

我总是对此持反对意见,因为有常识性的原因,有如此多的PHP安全违反现象。

PHP应用程序经常被黑掉是由于

PHP应用程序太多了。
它易于学习和编写。
糟糕的PHP也容易编写。

 就是这么简单。PHP流行好多年了。PHP越是受欢迎,它被发现的漏洞就越多。这些黑客发现的漏洞很少是PHP处理引擎本身的,通常是脚本本身的弱点。

这意味着,当一个PHP应用程序被黑掉的时候,大多数是程序员的错误。对不起,但这是事实。

你可以和其它web语言一样编写安全的PHP。是时候开始真正探索安全问题了。

推荐一本PHP程序猿都应该拜读的书

防止PHP hack的最佳防护

编写安全的PHP代码不是一个对PHP开发者隐藏的、秘密的黑色艺术。但是信心太零散了,你需要花费数周或数月(或不再这么长时间)去收集某些散篇目录或法则的、好的安全实践。甚至只有真的经验才会告诉你它有多重要。

幸亏Ben Edmunds已经为你做好了。它最近出版了《Building Secure PHP Apps ? a Practical Guide》,它是我读过的最好的安全相关的书籍之一,当然也是最好地涵盖了PHP。本文我将详述为什么我认为每个PHP开发者应当阅读。

本书是个简明指导,把你带到做为一名开发者的下一个等级,让你打造更好、更安全的脚本。

简介

本书很快就进入了web开发的常识规则:不要相信你的用户,过滤所有输入。从一个小情景开始,跳到了用户能够进入系统的技术方法。第一章的主题有:

SQL注入
大量赋值字段
类型转换
过滤输入/输出

这些都是PHP新手(和一些老手)一直容易忽视的地方。过滤输入被很多人看作是可选的一步,这一章做了大量讨论。

在阅读过程中,让我想起了多年前我的第一天工作,当时我深挖现存代码,找到了新用户创建脚本的代码:

if ($_POST["isadmin"] == 1) {

// code to set to admin in database 

}

当看到这段代码时,我感到非常恐慌,因为它是一个非常有效的脚本,很容易被一个恶意用户搞定,猜出来并插入一个简单的表单变量,进而访问大约5,000个信用卡卡号和其他的个人信息。

深挖后我发现如下代码:

$sql = "INSERT INTO database (id,name,...) VALUES (" . $_POST["Name"] . ");"

我在第一天差不多就走出了那份工作,因为他们正依靠这些可怕的代码。这些代码就在那儿,由你负责改变,一定要避免产生更多。

本章讨论了像这样的代码为什么是巨大的风险,以及如何修复。

HTTPS和证书

这是另一个领域,Ben包含了脚本、故事和一点点幽默,同时也清晰地解释了不太清晰的HTTPS的概念。他解释的方式,甚至你的老板都能理解。

本书非常全面地描述了证书的工作原理、证书类型以及实现方法,甚至包括如何在Apache或Nginx上部署。

密码

本书对于密码、哈希、表查询(lookup tables)和salts做了仔细的解释,这对开发人员创建用户登录系统有着令人难以置信的帮助。

这是一个甚至在2014年都极度缺乏的领域。我仍然能碰到过存储纯文本的密码或像ROT13加密【注1】来保护他们的愚蠢方法的应用程序。为了让人们使用你的应用程序,以及你的好名声,请不要这样做。

密码和其它敏感数据应该非常难以获取,甚至有人拿到数据库的所有权限。这本书很全面地包括了,会给你设计更好系统的不错指导。

身份验证和访问控制

本书包含的主题非常全面。当你构建新的PHP应用程序时,某些首要考虑是:

谁能够访问哪些资源?
谁能够控制其他用户访问?

这是考虑应用程序、特别是处理敏感数据的应用程序的重要地方。企业里的相当一部分开发就是致力于此。如果你不正确地建立了身份验证和访问控制,最可能发生的就是你让用户感到困扰,并产生了更多的工作。比这更糟糕的是服务器数据缺口 以及/或者 数据毁坏。

本书很好地覆盖了基础知识,然后它深入到像控制访问文件或应用程序单个页面之类的工作,还有很多供参考的代码示例。

特定利用

本书涵盖了一些普通的利用来破坏系统,非常详细地探索了跨站点脚本,它可以说是攻击者利用应用程序的最普通的方法。它解释了不同种类的攻击,以及如何保护自己。

不错吧?你能够通过这个链接打折购书!

我最喜欢这本书的地方

在阅读本书过程中,我真正享受的是,信息是如何以对于初学者和有经验的程序员都有用的方式呈现的。有一系列概念被提出,它们是什么以及如何自我保护。有大量的代码示例,而不像一些技术书籍所具备的“填充码”。

你可以很快通读本书,因为没有太多内容。新手可以通读本书,检查每个主题,开始看看他们的代码,并作出修正。记住在这个事情上,你需要持续修改。如果你回头看看,一定会为六个月前写的代码感到羞愧,你在做正确的事情。

更高级的、有经验的程序员可以使用这个指南填补他们的弱点(不管你在这个行当多长时间了,你有弱点的,承认吧),更好地了解他们在工作中使用的系统。例如,这么多年我疯了似的使用身份验证,但是从来没有在本书提到的层面考虑过。

不管你是谁,你会学到东西的。因此不要看本文了,去买一份拷贝吧!使用这个链接购买是有折扣的!!

PHP 相关文章推荐
php你的验证码安全码?
Jan 02 PHP
简单的PHP多图上传小程序代码
Jul 17 PHP
PHP __autoload()方法真的影响性能吗?
Mar 30 PHP
php对二维数组按指定键值key排序示例代码
Nov 26 PHP
在PHP中使用X-SendFile头让文件下载更快
Jun 01 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
php实现数组按指定KEY排序的方法
Mar 30 PHP
java微信开发之上传下载多媒体文件
Jun 24 PHP
php安装dblib扩展,连接mssql的具体步骤
Mar 02 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
如何在PHP中使用AES加密算法加密数据
Jun 24 PHP
推荐10个提供免费PHP脚本下载的网站
Dec 31 #PHP
php使用google地图应用实例
Dec 31 #PHP
php将文本文件转换csv输出的方法
Dec 31 #PHP
19个Android常用工具类汇总
Dec 30 #PHP
php+ajax实现文章自动保存的方法
Dec 30 #PHP
php实现监控varnish缓存服务器的状态
Dec 30 #PHP
php在线解压ZIP文件的方法
Dec 30 #PHP
You might like
php生成文件
2007/01/15 PHP
使用php来实现网络服务
2009/09/15 PHP
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
php与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
Javascript中的常见排序算法
2007/03/27 Javascript
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
python支付宝支付示例详解
2019/08/22 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
python中的时区问题
2021/01/14 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
广州地球村科技数据库题目
2016/04/25 面试题
自动化专业毕业生自荐信
2013/11/01 职场文书
党员培训思想汇报
2014/01/07 职场文书
法语专业求职信
2014/07/20 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
Python面向对象之内置函数相关知识总结
2021/06/24 Python
python 进阶学习之python装饰器小结
2021/09/04 Python
MySQL查询日期时间
2022/05/15 MySQL