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

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

  我老是对此持反对意见,由于有常识性的缘由,有如此多的PHP安全违反现象。html

  PHP应用程序常常被黑掉是因为:程序员

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

   就是这么简单。PHP流行好多年了。PHP越是受欢迎,它被发现的漏洞就越多。这些黑客发现的漏洞不多是PHP处理引擎自己的,一般是脚本自己的弱点。web

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

  你能够和其它web语言同样编写安全的PHP。是时候开始真正探索安全问题了。数据库

  防止PHP hack的最佳防御

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

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

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

  简介

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

  • 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开源项目作出了巨大的贡献。能够这么说,他知道他的东西,你可以相信这里呈现的信息。

相关文章
相关标签/搜索