每个PHP开发者都应该看的书

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

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

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

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

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

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

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

  防止PHP hack的最佳防护

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

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

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

  简介

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

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

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

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


1

2

3

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

// code to set to admin in database

}

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

  深挖后我发现如下代码:


1

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

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

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

  HTTPS和证书

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

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

  密码

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

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

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

  身份验证和访问控制

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

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

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

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

  特定利用

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

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

  我最喜欢这本书的地方

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

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

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

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

  免责声明

  我没有在我的博客做过多评论,因此你可能有一些问题。为清楚起见,我没有为评论收取付费或赔偿。上面的优惠码给我博客的读者在原书价格基础上少4美元,我不会收到钱的。当然为了评论的目的,我收到过本书的促销拷贝。

  我本人认识这个作者,那是我相信本书里的信息、完全信任其指导的原因之一。这几年Ben Edmunds在PHP社区有巨大的影响力,他有着10年的PHP经验,他是PHP用户组在波兰区域的领导者之一,这几年在PHP开源项目做出了巨大的贡献。可以这么说,他知道他的东西,你能够相信这里呈现的信息。

时间: 2024-10-12 14:51:58

每个PHP开发者都应该看的书的相关文章

每位开发者都该看:如何在四十岁后还能继续从事软件开发?

这是一个 42 岁的开发者所写经验分享文章.并且列出一些他 18 年多身为软件开发者的经验谈.许多部分看完后都会希望自己当时就能够了解,所以很推荐不论是新手或是老手都要好好阅读这一篇文章. 故事很长,一切从 1997 年开始讲起.那是一个令人怀念的年代(FF7 发售,微软入股苹果,铁达尼号电影上映),那是作者第一年身为软件开发者的年份.当时他的第一份工作是从事 ASP 并且在微软的平台上面使用 EditPlus.十八年过去,作者一共做过六份工作,其中被炒鱿鱼两次,出过两本书,从事过不少演讲.他整

在嵌入式学习过程中的困惑——我一开始看什么书都看不懂,怎么才能理出一个学习顺序

以前有个学员在学C语言时说,"C语言很多地方都很奇怪,都得用内核的知识去解释,可是你又不先教我内核,我没法学C语言.我只好自己看操作系统的书,看内核代码,可是看不懂."当然看不懂了,内核代码都是用C写的,如果不学内核就没法学C语言,那不学C语言又怎么可能看懂内核?看来这是一个鸡生蛋还是蛋生鸡的问题. 懒真的是人的本性,就连学习的过程都希望是一条路顺利地走下去,不用动脑就能学会的:身后走过的路都是"已知",每走一步就把眼前新的"未知"变成"

程序员必看的书之iOS程序员

前几天发布了一篇程序员必看的书,现在的IT人,程序员们不要一味的敲代码,我们也要有时间为自己充充电,买个kindle,公车,地铁上可以多多看看书.接下来我将为程序员们继续推荐一下比较好书.如果你觉得我推荐的这些书有用,就多看会,如果觉得推荐的不好,那就不要看了,就这么简单.如果你觉得我推荐的书是菜鸟才看的书,那您这位老鸟出门左转.希望给大家带来帮助. Objective-C 2.0程序设计 本书是Objective-C领域的经典著作,对Objective-C进行了系统而全面的阐述,权威性毋庸置疑

自学大数据如何入手?大数据学习入门看什么书?

2018年,火爆的科技层出不穷,大数据.云计算.人工智能.区块链等等都被侃侃而谈.尤其是大数据工程师更是深受程序员的青睐,如此火爆的职业,吸引了大批有志青年的加入.但在加入之前,你仍需要一份详细的就业前景分析报告. 作为中国官方重点扶持的战略性新兴产业,大数据产业已逐步从概念走向落地"大数据"和"虚拟化"两大热门领域得到了广泛关注和重视,90%企业都在使用大数据. 财政大数据包括:公安大数据.质检大数据.食品安全大数据.卫生大数据.共商大数据.民政大数据: 企业大数

转:哪本书是对程序员最有影响、每个程序员都该阅读的书?

哪本书是对程序员最有影响.每个程序员都该阅读的书? 国外知名网站stackoverflow上有一个问题调查: 哪本书是对程序员最有影响.每个程序员都该阅读的书?,这个调查已历时两年,目前为止吸引了153,432人访问,读者共推荐出了478本书(还在增加),其中最火的一本书<Code Complete>被顶了1306次.如果你是个程序员,你一定有兴趣看看这些书里你都看过几本,如果你一本没看过的话,我也不好说什么,也许你是个天才,但我相信大多数人都知道,你在学校里根本学不到什么真正的工作中需要的知

C++开发者都应该使用的10个C++11特性

本文由 伯乐在线 - 治不好你我就不是兽医 翻译自 Marius Bancila.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. [感谢冯上(@治不好你我就不是兽医 )的热心翻译.如果其他朋友也有不错的原创或译文,可以尝试推荐给伯乐在线.] 在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛.不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备.你也许看到过许多类似介绍各种C++11特性的文章.下面是我总结的,C++开发者都需要学习和使用的C++11

每个Javascript开发者都应当知道的那些事

每个Javascript开发者都应当知道的那些事 2015-06-07 前端大全 (点击上方蓝字,可快速关注我们) Javascript是一种日益增长的语言,特别是现在ECMAScript规范按照每年的发布时间表发布.伴随着这门语言的规模化和快速发展,掌握JS(不仅仅是jQuery)的重要性,变得更加重要. 这不是一篇自称是 JS 开发者知识圣杯的权威指南.不过里面绝对有一些我曾经错过的,有一些我可能是错用的,还有一些你可能不同意每个JS开发者应该知道的东西. 如何FizzBuzz 译者注:Fi

每个程序员都应读的书(转)

收藏,有时间,就读一读,有好处! 很多程序员响应,他们在推荐时也写下自己的评语.以前就有国内网友介绍这个程序员书单,不过都是推荐数 Top 10的书.其实除了前10本之外,推荐数前30左右的书籍都算经典,伯乐在线整理编译这个问答贴,同时摘译部分推荐人的评语.下面就按照各本书的推荐数排列. 1. <代码大全> 史蒂夫·迈克康奈尔 推荐数:1684 “优秀的编程实践的百科全书,<代码大全>注重个人技术,其中所有东西加起来,就是我们本能所说的“编写整洁的代码”.这本书有50页在谈论代码布

想成为网络安全技术爱好者(可能是黑客)的话,需要看什么书?

(从刚刚从知乎上看到了的问题,看到排名第一的答案依旧是调侃和嘲讽,心生凉意,大概知乎也到如此地步了) 与其说是成为一名hacker倒不如说是 成为一名网络安全技术爱好者更符合你们的审美标准,我们一般是不会说自己是某某客,一来是这个词已经被世俗歪曲,以及各种帽(red hat or black hat)我们提只会让不懂的人误解,二来不是什么人都配叫这两个字的,我在很多场合提过这两个字是有内涵,坚信它的人是有 自由 平等 随意 突破的信条的. 既然题主问想要成为一名hacker需要阅读什么样的书.