PHP中的防御性编程_第1页
PHP中的防御性编程_第2页
PHP中的防御性编程_第3页
PHP中的防御性编程_第4页
PHP中的防御性编程_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——PHP中的防御性编程PHP中的防卫性编程

评价一个编程的好坏,就是看该程序是否把用户可能发生的故障点想到的多全面。下面是我用心为大家整理的PHP中的防卫性编程,梦想对大家有扶助,更多内容请关注应届毕业生网!

菲纳格动态逆定律:

会出错的,终将会出错-在最糟糕的时刻。

防卫性编程是什么意思

防卫性编程,简朴的说,就是在编程的时候有目的地预料可能的故障点。目的是在那些可能发生的问题发生前解决它们。你望见了问题,对吧?预料意料之外的事情本来就有内在的难度,当你想要预料意料之外的事情并且解决它就更是难上了好几倍。

下面我们看几个实际的例子。

条件语句

这是最轻易举行防卫性编程的地方之一,也是最轻易得志的地方。在用PHP编程的大量处境下你不会需要"else'。

假设,你在写一个函数并且需要一个条件语句。在这里,你只需要为你特定的变量使用三个条件语句如下:

if$var==a

elseif$var==b

elseif$var==c

没有其他可能性了,你说,并且持续码代码。但是,让我们在这里停一下。我知道你知道这里没有其他可能性了。并且我相信你。但有时候不成预料的处境会发生。我们忘掉了一些处境。我们检查错误。我们最终重用了一些代码,超出了原本的预定范围。突然我们有了泄露错误或者有时候是静默的错误状态,由于我们没有使用catch。使用else代码块。在使用switch时要使用default。用它们来返回或者记录错误,这样你才知道发生了什么假设发生了的话。虽然会多用两行代码,但当一些你无法预料的事情发生时,这是值得的。

绝不相信用户输入

你以前有没有听说过这个说法?大多数程序员听过。这有一点含混,通俗点讲,理所当然。但它是真理。你绝不理应相信用户输入。这不是说你假设全体用户是疯狂的黑客,他们使用一些用心设计的命令来摧毁你的应用。没有必要妄想。但是,你理应假设用户不知道你的代码,他们不知道你需要填写什么参数,或者参数理应多长。他们不知道什么文件类型或者什么大小能上传即使应用报告了他们。无意他们会是机器或者黑客并且他们梦想在他们的输入中运行脚本,有时候甚至是在登陆后的输入中。你怎么知道你能相信认证或者验证码能在用户输入之前供给一个安好的堡垒?

答案:绝不。

你绝不相信用户输入。假设你信任的用户输入,那么你永远不会有一个突破。明白了吗?所以总是要评估你的输入,确定要保证你在处理数据尤其是要存入数据库或者要把它表示出来时使用了适合的技术。因此绝不相信输入,即使来自不是用户的输入的地方输入验证永远是你的挚友。看看SurvivetheDeepEnd:PHPSecurity并且使用validationlibrary.吧。

对你的代码的假设

不要假设任何事情。假设前两个主题教会我们一些事情的话,那就是我们不理应做任何假设。作为程序员,尤其是致力于一个工程太久后,我们开头做好多假设。我们假设用户知道一些我们知道的事情。不确定是技术细节,也可以是程序的功能性细节。我们假设用户知道文件能有多大由于。。。我们已经知道。或者他们知道为了让邮件脚本。。。但事实不是,他们不知道以上任何东西。这犹如更多的是前端的工作,但明显的是你在后端依旧要处理用户行为和用户输入,所以值得好好想想。

另一个大量程序员都会做的惊人的假设是我们在任何时候对于我们的函数,类或者其它代码段的明显的功能属性。一个具有防卫性的程序员会留心考虑的不仅仅是用一般的文档来描述函数是干什么的他们也将写下他们对输入,参数,用例,或任何其他类似的`东西做出的任何假设。由于我们都是人,我们过一段时间会忘掉一些事。我们结果也很可能会面临其他人维护,扩展或者替换我们的代码。假设没有别的,回想一下,编程是发生在一个弥漫技术变革的世界里。假设你的应用依旧能使用几年,可能会升级PHP版本并且失去一些功能,或者一些你自己代码里面具有交互的组件之间需要变更。预料这些是很困难的,所以好的解释和文档是分外重要的。

视野狭窄

另一件可以使我们忘却好的评论实践以及标准的东西是视野狭窄。大量程序员都具有视野狭窄的毛病。你知道这种感觉-你解决问题,你处于最正确状态。你觉得与你的音乐或没有独立于自己的小世界中,并且你就在编码,突然两小时过了,你意识到你已经写了多数行没有解释的代码。我们全体人无意都会遇到这种事情,但重要的是在某处察觉这个处境并且补上应有的解释。

语法和命名的一致性

一致性是一个灰色地带它更多的是关于编码标准之类的,但它和防卫性编程也有联系。在PHP中,有标准模范你的代码格式以便别人查看,或者你以后使用。但往往没人让你的代码标准化。但是无论你是否按照标准编码,你至少要保持一致性这能让你少犯错误。这对于需要大量时间返回并且修复的小的语法错误尤其适用。假设你总是使用一致的间隔,格式和语法,命名规格等等你就能更好的制止犯错以至于误读你自己的代码。你更可能快速欣赏代码并且找到你需要的东西。

总结

总的来说,除去用户行为和动作,不要对你的程序做任何假设。假设是具有防卫性编程习惯的程序员最大的敌人。不要假设你不需要default语句或者else代码块。尽量使用正确的用户错误信息,警告,日志或者任何其它你假设不会用到的代码。你的假设通常是正确的但我们不在乎。我们在乎的是它们出错的时候。确定要筹划得

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论