php安全
come_on_air
这个作者很懒,什么都没留下…
展开
-
discuz的php防止sql注入函数
最近在做一个主题投票网站,客户懂一些程序方面的东西。有特别要求需要过滤一些字符防止sql注入。本来这方面就没有特别的研究过。呵呵,又发扬了一回拿来主义。把discuz论坛的sql防注入函数取了来! [php] view plaincopy$magic_quotes_gpc = get_magic_quotes_gpc(); @extract(转载 2017-01-11 14:09:19 · 2313 阅读 · 0 评论 -
PHP安全编程:跨站请求伪造CSRF的防御
跨站请求伪造(CSRF)是一种允许攻击者通过受害者发送任意HTTP请求的一类攻击方法。此处所指的受害者是一个不知情的同谋,所有的伪造请求都由他发起,而不是攻击者。这样,很你就很难确定哪些请求是属于跨站请求伪造攻击。事实上,如果没有对跨站请求伪造攻击进行特意防范的话,你的应用很有可能是有漏洞的。请看下面一个简单的应用,它允许用户购买钢笔或铅笔。界面上包含下面的表单:[ph原创 2017-06-16 13:39:31 · 236 阅读 · 0 评论 -
PHP安全编程:不要暴露数据库访问权限
数据库使用中需要关注的主要问题之一是访问权限即用户名及密码的暴露。在编程中为了方便,一般都会用一个db.inc文件保存,如:[php] view plaincopy $db_user = 'myuser'; $db_pass = 'mypass'; $db_host = '127.0.0.1'; $db = mysql转载 2017-06-16 13:47:41 · 932 阅读 · 0 评论 -
PHP安全编程:防止SQL注入
SQL 注入是PHP应用中最常见的漏洞之一。事实上令人惊奇的是,开发者要同时犯两个错误才会引发一个SQL注入漏洞,一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。这两个重要的步骤缺一不可,需要同时加以特别关注以减少程序错误。对于攻击者来说,进行SQL注入攻击需要思考和试验,对数据库方案进行有根有据的推理非常有必要(当然假设攻击者看不到你的转载 2017-06-16 13:50:41 · 9366 阅读 · 0 评论 -
PHP安全编程:cookie暴露导致session被劫持
使用Cookie而产生的一个风险是用户的cookie会被攻击者所盗窃。如果会话标识保存在cookie中,cookie的暴露就是一个严重的风险,因为它能导致会话劫持。PHP为你处理相关会话管理的复杂过程最常见的cookie暴露原因是浏览器漏洞和跨站脚本攻击(见专题前几部分)。虽然现在并没有已知的该类浏览器漏洞,但是以往出现过几例,其中最有名的一例同时发生在IE浏览器的4.0,5.转载 2017-06-16 13:53:38 · 712 阅读 · 0 评论 -
PHP安全编程:session固定获取合法会话
关于会话,需要关注的主要问题是会话标识的保密性问题。如果它是保密的,就不会存在会话劫持的风险了。通过一个合法的会话标识,一个攻击者可以非常成功地冒充成为你的某一个用户。一个攻击者可以通过三种方法来取得合法的会话标识:猜测捕获固定PHP生成的是随机性很强的会话标识,所以被猜测的风险是不存在的。常见的是通过捕获网络通信数据以得到会话标识。为了避免会话标识被捕获的翻译 2017-06-16 13:54:57 · 368 阅读 · 0 评论 -
PHP安全编程:session劫持的防御
session 数据暴露会话数据常会包含一些个人信息和其它敏感数据。基于这个原因,会话数据的暴露是被普遍关心的问题。一般来说,暴露的范围不会很大,因为会话数据是保存在服务器环境中的,而不是在数据库或文件系统中。因此,会话数据自然不会公开暴露。使用SSL是一种特别有效的手段,它可以使数据在服务器和客户端之间传送时暴露的可能性降到最低。这对于传送敏感数据的应用来说非常重要。SSL在HTTP转载 2017-06-16 13:57:31 · 677 阅读 · 0 评论 -
PHP安全编程:防止源代码的暴露
关于包含的一个重要问题是源代码的暴露。产生这个问题主要原因是下面的常见情况: 对包含文件使用.inc的扩展名包含文件保存在网站主目录下Apache未设定.inc文件的类型Apache的默认文件类型是text/plain 上面情况造成了可以通过URL直接访问包含文件。更糟的是,它们会被作为普通文本处理而不会被PHP所解析,这样你的源代码就会显示在用户的浏览器上原创 2017-06-16 13:58:28 · 1571 阅读 · 0 评论 -
PHP安全编程:留心后门URL
后门URL是指虽然无需直接调用的资源能直接通过URL访问。例如,下面WEB应用可能向登入用户显示敏感信息:[php] view plaincopy $authenticated = FALSE; $authenticated = check_auth(); /* ... */ if ($authenticated)原创 2017-06-16 13:59:32 · 548 阅读 · 0 评论 -
PHP安全编程:跨站脚本攻击的防御
跨站脚本攻击是众所周知的攻击方式之一。所有平台上的Web应用都深受其扰,PHP应用也不例外。所有有输入的应用都面临着风险。Webmail,论坛,留言本,甚至是Blog。事实上,大多数Web应用提供输入是出于更吸引人气的目的,但同时这也会把自己置于危险之中。如果输入没有正确地进行过滤和转义,跨站脚本漏洞就产生了。以一个允许在每个页面上录入评论的应用为例,它使用了下面的表单帮助用户进行原创 2017-06-16 13:37:06 · 325 阅读 · 0 评论 -
PHP安全编程:文件上传攻击的防御
有时在除了标准的表单数据外,你还需要让用户进行文件上传。由于文件在表单中传送时与其它的表单数据不同,你必须指定一个特别的编码方式multipart/form-data:[php] view plaincopy"upload.php" method="POST" enctype="multipart/form-data"> 一个同时有普通表单原创 2017-06-16 13:34:57 · 883 阅读 · 0 评论 -
php防止xss攻击的方法
其实就是过滤从表单提交来的数据,使用php过滤函数就可以达到很好的目的。[php] view plaincopyif (isset($_POST['name'])){ $str = trim($_POST['name']); //清理空格 $str = strip_tags($str); //过滤html标签转载 2017-01-11 14:10:07 · 4640 阅读 · 0 评论 -
PHP安全编程:防止源代码的暴露
关于包含的一个重要问题是源代码的暴露。产生这个问题主要原因是下面的常见情况: 对包含文件使用.inc的扩展名包含文件保存在网站主目录下Apache未设定.inc文件的类型Apache的默认文件类型是text/plain 上面情况造成了可以通过URL直接访问包含文件。更糟的是,它们会被作为普通文本处理而不会被PHP所解析,这样你的源代码就会显示在用户的浏览器上原创 2017-06-16 09:36:40 · 623 阅读 · 0 评论 -
PHP安全编程:网站安全设计的一些原则
深度防范深度防范原则是安全专业人员人人皆知的原则,它说明了冗余安全措施的价值,这是被历史所证明的。深度防范原则可以延伸到其它领域,不仅仅是局限于编程领域。使用过备份伞的跳伞队员可以证明有冗余安全措施是多么的有价值,尽管大家永远不希望主伞失效。一个冗余的安全措施可以在主安全措施失效的潜在的起到重大作用。回到编程领域,坚持深度防范原则要求您时刻有一个备份方案。如果一个安全措施失效了原创 2017-06-16 09:38:36 · 259 阅读 · 0 评论 -
PHP安全编程:不要让不相关的人看到报错信息
没有不会犯错的开发者,PHP的错误报告功能可以协助你确认和定位这些错误,可以提供的这些错误的详细描述,但如果被恶意攻击者看到,这就不妙了。不能让大众看到报错信息,这一点很重要。做到这一点很容易,只要关闭display_errors,当然如果您希望得到出错信息,可以打开log_errors选项,并在error_log选项中设置出错日志文件的保存路径。由于出错报告的级别设定可以导致有些错误无法转载 2017-06-16 09:39:42 · 166 阅读 · 0 评论 -
PHP安全编程:过滤用户输入
过滤是Web应用安全的基础。它是你验证数据合法性的过程。通过在输入时确认对所有的数据进行过滤,你可以避免被污染(未过滤)数据在你的程序中被误信及误用。大多数流行的PHP应用的漏洞最终都是因为没有对输入进行恰当过滤造成的。我所指的过滤输入是指三个不同的步骤:识别输入过滤输入区分已过滤及被污染数据把识别输入作为第一步是因为如果你不知道它是什么,你也就不能正确地过转载 2017-06-16 09:43:13 · 423 阅读 · 0 评论 -
PHP安全编程:对输出要进行转义
另外一个Web应用安全的基础是对输出进行转义或对特殊字符进行编码,以保证原意不变。例如,O'Reilly在传送给MySQL数据库前需要转义成O\'Reilly。单引号前的反斜杠代表单引号是数据本身的一部分,而不是并不是它的本义。我所指的输出转义具体分为三步:识别输出 输出转义区分已转义与未转义数据只对已过滤数据进行转义是很有必要的。尽管转义能防止很多常见安全转载 2017-06-16 11:58:35 · 973 阅读 · 0 评论 -
PHP安全编程:表单与数据安全
在典型的PHP应用开发中,大多数的逻辑涉及数据处理任务,例如确认用户是否成功登录,在购物车中加入商品及处理信用卡交易。数据可能有无数的来源,做为一个有安全意识的开发者,你需要简单可靠地区分两类数据:已过滤数据被污染数据所有你自己设定的数据可信数据,可以认为是已过滤数据。一个你自己设定的数据是任何的硬编码数据,例如下面的email地址数据:$email = 'gonn转载 2017-06-16 12:00:59 · 410 阅读 · 0 评论 -
PHP安全编程:从URL的语义进行攻击
好奇心是很多攻击者的主要动机,语义URL攻击就是一个很好的例子。此类攻击主要包括对URL进行编辑以期发现一些有趣的事情。例如,如果用户chris点击了你的软件中的一个链接并到达了页面http://example.org/private.php?user=chris, 很自然地他可能会试图改变user的值,看看会发生什么。例如,他可能访问http://example.org/private.php?转载 2017-06-16 12:04:10 · 294 阅读 · 0 评论 -
PHP安全编程:文件包含的代码注入攻击
一个特别危险的情形是当你试图使用被污染数据作为动态包含的前导部分时:[php] view plaincopy include "{$_GET['path']}/header.inc"; ?> 在这种情形下攻击者能操纵不只是文件名,还能控制所包含的资源。由于PHP默认不只可以包含文件,还可以包含下面的资源(由配置文件中转载 2017-06-19 10:01:42 · 589 阅读 · 0 评论