201603-12 PHP安全-表单与数据 表单与数据 在典型的PHP应用开发中,大多数的逻辑涉及数据处理任务,例如确认用户是否成功登录,在购物车中加入商品及处理信用卡交易。 数据可能有无数的来源,做为一个有安全意识的开发者,你需要简单可靠地区分两类数据: l 已过滤数据l 被污染数据 所有你自己设定的... 继续阅读 >
201603-11 PHP安全-输出转义 输出转义 另外一个Web应用安全的基础是对输出进行转义或对特殊字符进行编码,以保证原意不变。例如,O'Reilly在传送给MySQL数据库前需要转义成O\'Reilly。单引号前的反斜杠代表单引号是数据本身的一部分,而不是并不是它的本义。 我所指的输出转义具体分为三步:l 识别输出l 输出转义l &n... 继续阅读 >
201603-11 PHP安全-过滤输入 过滤输入 过滤是Web应用安全的基础。它是你验证数据合法性的过程。通过在输入时确认对所有的数据进行过滤,你可以避免被污染(未过滤)数据在你的程序中被误信及误用。大多数流行的PHP应用的漏洞最终都是因为没有对输入进行恰当过滤造成的。 我所指的过滤输入是指三个不同的步骤: l 识别输入l 过... 继续阅读 >
201603-11 PHP安全-跟踪数据 跟踪数据 作为一个有安全意识的开发者,最重要的一件事就是随时跟踪数据。不只是要知道它是什么和它在哪里,还要知道它从哪里来,要到哪里去。有时候要做到这些是困难的,特别是当你对WEB的运做原理没有深入理解时。这也就是为什么尽管有些开发者在其它开发环境中很有经验,但他对WEB不是很有经验时,经常会犯错并制造安全漏洞。 大多数人在读取EMAIL时,一般不会被题为"Re:H... 继续阅读 >
201603-11 PHP安全-平衡风险与可用性 平衡风险与可用性 用户操作的友好性与安全措施是一对矛盾,在提高安全性的同时,通常会降低可用性。在你为不合逻辑的使用者写代码时,必须要考虑到符合逻辑的正常使用者。要达到适当的平衡的确很难,但是你必须去做好它,没有人能替代你,因为这是你的软件。 尽量使安全措施对用户透明,使他们感受不到它的存在。如果实在不可能,就尽量采用用户比较常见和熟悉的方式来进行。例如,在... 继续阅读 >
201603-11 PHP安全-暴露最小化 暴露最小化 PHP应用程序需要在PHP与外部数据源间进行频繁通信。主要的外部数据源是客户端浏览器和数据库。如果你正确的跟踪数据,你可以确定哪些数据被暴露了。Internet是最主要的暴露源,这是因为它是一个非常公共的网络,您必须时刻小心防止数据被暴露在Internet上。 数据暴露不一定就意味着安全风险。可是数据暴露必须尽量最小化。例如,一个用户进入支付系统,在向你的服务器传输... 继续阅读 >
201603-11 PHP安全-简单就是美 简单就是美 复杂滋生错误,错误能导致安全漏洞。这个简单的事实说明了为什么简单对于一个安全的应用来说是多么重要。没有必要的复杂与没有必要的风险一样糟糕。 例如,下面的代码摘自一个最近的安全漏洞通告: CODE: <?php $search=(isset($_GET['search'])?$_GET['search']:''); ?> ... 继续阅读 >
201603-11 PHP安全-最小权限 最小权限 我过去有一辆汽车有一个佣人钥匙。这个钥匙只能用来点火,所以它不能打开车门、控制台、后备箱,它只能用来启动汽车。我可以把它给泊车员(或把它留在点火器上),我确认这个钥匙不能用于其它目的。 把一个不能打开控制台或后备箱的钥匙给泊车员是有道理的,毕竟,你可能想在这些地方保存贵重物品。但我觉得没有道理的是为什么它不能开车门。当然,这是因为我... 继续阅读 >
201603-11 PHP安全-深度防范 深度防范 深度防范原则是安全专业人员人人皆知的原则,它说明了冗余安全措施的价值,这是被历史所证明的。 深度防范原则可以延伸到其它领域,不仅仅是局限于编程领域。使用过备份伞的跳伞队员可以证明有冗余安全措施是多么的有价值,尽管大家永远不希望主伞失效。一个冗余的安全措施可以在主安全措施失效的潜在的起到重大作用。 回到编程领... 继续阅读 >
201603-11 PHP安全-错误报告 错误报告没有不会犯错的开发者,PHP的错误报告功能将协助您确认和定位这些错误。可以PHP提供的这些详细描述也可能被恶意攻击者看到,这就不妙了。使大众看不到报错信息,这一点很重要。做到这一点很容易,只要关闭display_errors,当然如果您希望得到出错信息,可以打开log_errors选项,并在error_log选项中设置出错日志文件的保存路径。 由于出错报告的级别设定可以导致有些错误无法发现,您至少... 继续阅读 >
201603-11 PHP安全-全局变量与注册 1.全局变量注册如果您还能记起早期WEB应用开发中使用C开发CGI程序的话,一定会对繁琐的表单处理深有体会。当PHP的register_globals配置选项打开时,复杂的原始表单处理不复存在,公用变量会自动建立。它让PHP编程变得容易和方便,但同时也带来了安全隐患。事实上,register_globals是无辜的,它并不会产生漏洞,同时还要开发者犯错才行。可是,有两个主要原因导致了您必须在开发和布署应用时关闭register_globals:第一,... 继续阅读 >
201511-19 注定要被淘汰的十大安全技术 系统性漏洞和瞬息万变的威胁环境将毁灭许多当今值得信赖的安全技术。你是否曾有过这样的经历:启动软盘上的写入保护开关,以防止启动病毒和恶意覆写;关闭调制解调器,以防止黑客在晚上打来电话;卸载ansi.sys驱动,以防止恶意文本文件重新排布键盘,让下一次敲击直接格式化你的硬盘;检查autoexec.bat和config.sys文件,以确认没有恶意条目通过插入它们进行自启动。时过境迁,上述情况如今很难见到了。黑客们取得了进步,技术替... 继续阅读 >
201510-10 PHP header 函数的用法及其注意事项 voidheader(string$string[,bool$replace=true[,int$http_response_code]]):SendarawHTTPheader下面有一些使用header的几种用法:1、使用header函数进行跳转页面;header('Location:'.$url);其中$url就是将要跳转的url了。这种用法的注意事项有以下几点:Location和":"之间不能有空格,否则会出现错误(注释:我刚测试了,在我本地环境下,没有跳转页面,但是也没有报错,不清楚什么原因);... 继续阅读 >
201508-24 PHP安全有帮助的一些函数 安全是编程非常重要的一个方面。在任何一种编程语言中,都提供了许多的函数或者模块来确保程序的安全性。在现代网站应用中,经常要获取来自世界各地用户的输入,但是,我们都知道“永远不能相信那些用户输入的数据”。所以在各种的Web开发语言中,都会提供保证用户输入数据安全的函数。今天,我们就来看看,在著名的开源语言PHP中有哪些有用的安全函数。在PHP中,有些很有用的函数开源非常方便的防止你的网站遭受各种攻击,例如... 继续阅读 >
201507-21 PHP开发注意安全问题总结 php给了开发者极大的灵活性,但是这也为安全问题带来了潜在的隐患,近期需要总结一下以往的问题,在这里借翻译一篇文章同时加上自己开发的一些感触总结一下。简介当开发一个互联网服务的时候,必须时刻牢记安全观念,并在开发的代码中体现。PHP脚本语言对安全问题并不关心,特别是对大多数没有经验的开发者来说。每当你讲任何涉及到钱财事务等交易问题时,需要特别注意安全问题的考虑,例如开发一个论坛或者是一个购物车等。安... 继续阅读 >
201502-05 网民应该如何保护自己的隐私 网络时代的到来从根本上改变了人们的生活方式和生存方式,给人们的生产生活带来了极大的方便。但是,网络具有双面性,大家在体现网络时代的巨大优势和潜力的同时,也使人们的隐私和权力受到前所未有的严峻挑战,在网络环境下非法搜集、整理、分析、和传播个人隐私比以往任何时候都容易的多。随着中国互联网的快速野蛮发展,国内各个互联网公司往往急功近利,通过各种手段获取网民隐私,而有些网站由于技术能力有限,往往无法保... 继续阅读 >