上一页 1 ··· 40 41 42 43 44 45 46 47 48 ··· 96 下一页
摘要: 使用系统命令是一项危险的操作,尤其在你试图使用远程数据来构造要执行的命令时更是如此。如果使用了被污染数据,命令注入漏洞就产生了。exec()是用于执行shell命令的函数。它返回执行并返回命令输出的最后一行,但你可以指定一个数组作为第二个参数,这样输出的每一行都会作为一个元素存入数组。使用方式如下:1假设ls命令在shell中手工运行时会产生如下输出:1$ ls2total 03-rw-rw-r-- 1 chris chris 0 May 21 12:34 php-security4-rw-rw-r-- 1 chris chris 0 May 21 12:34 chris-shiflett当通 阅读全文
posted @ 2013-07-29 16:53 幻星宇 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 关于包含的一个重要问题是源代码的暴露。产生这个问题主要原因是下面的常见情况:对包含文件使用.inc的扩展名包含文件保存在网站主目录下Apache未设定.inc文件的类型Apache的默认文件类型是text/plain上面情况造成了可以通过URL直接访问包含文件。更糟的是,它们会被作为普通文本处理而不会被PHP所解析,这样你的源代码就会显示在用户的浏览器上。避免这种情况很容易。只能重组你的应用,把所有的包含文件放在网站主目录之外就可以了,最好的方法是只把需要公开发布的文件放置在网站主目录下。虽然这听起来有些疯狂,很多情形下能导致源码的暴露。我曾经看到过Apache的配置文件被误写(并且在下次启动 阅读全文
posted @ 2013-07-29 16:51 幻星宇 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 一个比欺骗表单更高级和复杂的攻击方式是HTTP请求欺骗。这给了攻击者完全的控制权与灵活性,它进一步证明了不能盲目信任用户提交的任何数据。为了演示这是如何进行的,请看下面位于http://example.org/form.php的表单:12Please select a color:389如果用户选择了Red并点击了Select按钮后,浏览器会发出下面的HTTP请求:1POST /process.php HTTP/1.12Host: example.org3User-Agent: Mozilla/5.0 (X11; U; Linux i686)4Referer: http://example.o 阅读全文
posted @ 2013-07-29 16:49 幻星宇 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 跨站请求伪造(CSRF)是一种允许攻击者通过受害者发送任意HTTP请求的一类攻击方法。此处所指的受害者是一个不知情的同谋,所有的伪造请求都由他发起,而不是攻击者。这样,很你就很难确定哪些请求是属于跨站请求伪造攻击。事实上,如果没有对跨站请求伪造攻击进行特意防范的话,你的应用很有可能是有漏洞的。请看下面一个简单的应用,它允许用户购买钢笔或铅笔。界面上包含下面的表单:010203Item:0408Quantity: 091011一个攻击者会首先使用你的应用以收集一些基本信息。例如,攻击者首先访问表单并发现两个表单元素item及quantity,他也同时知道了item的值会是铅笔或是钢笔。下面的bu 阅读全文
posted @ 2013-07-29 16:48 幻星宇 阅读(486) 评论(0) 推荐(0) 编辑
摘要: Ctype函数是PHP内置的字符串体测函数。主要有以下几种ctype_alnum-- Check for alphanumeric character(s)检测是否是只包含[A-Za-z0-9]ctype_alpha-- Check for alphabetic character(s)检测是否是只包含[A-Za-z]ctype_cntrl-- Check for control character(s)检查是否是只包含类是“\n\r\t”之类的字 符控制字符ctype_digit-- Check for numeric character(s)检查时候是只包含数字字符的字符串(0-9)cty 阅读全文
posted @ 2013-07-29 16:42 幻星宇 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 深度防范深度防范原则是安全专业人员人人皆知的原则,它说明了冗余安全措施的价值,这是被历史所证明的。深度防范原则可以延伸到其它领域,不仅仅是局限于编程领域。使用过备份伞的跳伞队员可以证明有冗余安全措施是多么的有价值,尽管大家永远不希望主伞失效。一个冗余的安全措施可以在主安全措施失效的潜在的起到重大作用。回到编程领域,坚持深度防范原则要求您时刻有一个备份方案。如果一个安全措施失效了,必须有另外一个提供一些保护。例如,在用户进行重要操作前进行重新用户认证就是一个很好的习惯,尽管你的用户认证逻辑里面没有已知缺陷。如果一个未认证用户通过某种方法伪装成另一个用户,提示录入密码可以潜在地避免未认证(未验证) 阅读全文
posted @ 2013-07-29 16:39 幻星宇 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 没有不会犯错的开发者,PHP的错误报告功能可以协助你确认和定位这些错误,可以提供的这些错误的详细描述,但如果被恶意攻击者看到,这就不妙了。不能让大众看到报错信息,这一点很重要。做到这一点很容易,只要关闭display_errors,当然如果您希望得到出错信息,可以打开log_errors选项,并在error_log选项中设置出错日志文件的保存路径。由于出错报告的级别设定可以导致有些错误无法发现,您至少需要把error_reporting设为E_ALL。E_ALL | E_STRICT 是最高的设置,提供向下兼容的建议,如不建议使用的提示。所有的出错报告级别可以在任意级别进行修改,所以您如果使用 阅读全文
posted @ 2013-07-29 16:36 幻星宇 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 除了能在共享服务器上读取任意文件之外,攻击者还能建立一个可以浏览文件系统的脚本。由于你的大多数敏感文件不会保存在网站主目录下,此类脚本一般用于找到你的源文件的所在位置。请看下例:01read())26{27$size=filesize("$dir$filename");2829if(is_dir("$dir$filename"))30{31$type='dir';32$filename.='/';33}34else35{36$type='file';37}3839if(is_readable("$ 阅读全文
posted @ 2013-07-29 16:34 幻星宇 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 绝不要信任外部数据或输入关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据。在采取措施确保安全之前,来自任何其他来源(比如 GET 变量、表单 POST、数据库、配置文件、会话变量或 cookie)的任何数据都是不可信任的。例如,下面的数据元素可以被认为是安全的,因为它们是在 PHP 中设置的。1但是,下面的数据元素都是有瑕疵的。1为什么第一个变量 $myUsername 是有瑕疵的?因为它直接来自表单 POST。用户可以在这个输入域中输入任何字符串,包括用来清除文件或运行以前上传的 阅读全文
posted @ 2013-07-29 16:28 幻星宇 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 跨站脚本攻击是众所周知的攻击方式之一。所有平台上的Web应用都深受其扰,PHP应用也不例外。所有有输入的应用都面临着风险。Webmail,论坛,留言本,甚至是Blog。事实上,大多数Web应用提供输入是出于更吸引人气的目的,但同时这也会把自己置于危险之中。如果输入没有正确地进行过滤和转义,跨站脚本漏洞就产生了。以一个允许在每个页面上录入评论的应用为例,它使用了下面的表单帮助用户进行提交:12Name: 3Comment: 45程序向其他访问该页面的用户显示评论。例如,类似下面的代码段可能被用来输出一个评论($comment)及与之对应的发表人($name):1$name writes:&quo 阅读全文
posted @ 2013-07-29 16:24 幻星宇 阅读(348) 评论(0) 推荐(0) 编辑
上一页 1 ··· 40 41 42 43 44 45 46 47 48 ··· 96 下一页