本文共 1753 字,大约阅读时间需要 5 分钟。
Flex和PHP是现代网络开发中非常流行的技术组合,它们结合了速度和灵活性,为开发者创造了强大的研发能力。然而,随着项目复杂度的增加,安全问题也随之而来。虽然简单的应用可能不需要特别的安全措施,但如果不重视安全问题,asions值_mb_的漏洞可能导致严重的后果。在之前的工作中,我就是这么学到的,但在使用Flex 2搭配PHP时,发现如果严格按照Adobe的示例代码来开发,可能会引发一些大问题。因此,我决定详细探讨其潜在的安全风险,以确保在公共Flex网站中部署PHP/Flex应用时不会遇到麻烦。
要强调的是,Flex和Flash文件非常容易被反编译。由于这些文件格式是公开的,目前有很多反编译工具可以帮助入侵者分析文件内容。一个人可以轻易地监控Flex应用与服务器之间的数据交流,并侦测接收的URI和期望的参数,从而注入恶意代码。
此外,Flex/PHP应用程序通常会返回结构清晰的XML数据,这些数据同样容易被解析。如果遇到有效的攻击者,可能就会通过分析这些数据发现潜在的安全漏洞。
根据PHP安全协会的报告,很多编程错误都可能导致应用程序的安全性被破坏。以下是一些常见但危险的问题:
让我们用一个实际的例子来看看SQL注入是如何进行的。假设我们有一个用户登录的页面,Flex应用会发送userid和 password到PHP脚本进行验证。默认情况下,这样的查询是:
SELECT * FROM users WHERE userid='a' AND password='b';
然而,这不够安全。如果一个攻ه者输入 "admin" 作为 userid,而将作为 password 输入的字段填入 "' OR '1'='1",那么查询会变成:
SELECT * FROM users WHERE userid='admin' AND password='' OR '1'='1';
这导致系统返回所有管理员的信息,这是一个公开入口!为了防范这种攻击,可以启用magic_quotes_gpc选项。需要注意的是,magic_quotes_gpc默认是启用的,但这会导致所有变量都带有反斜杠。如果没启用,这个问题就需要通过调用 addslashes() 来修补。
基于上述原因,我们必须在应用中加强输入验证。确保在所有查询中使用合适的函数来清除潜在的恶意代码。例如:
$userid = addslashes($_REQUEST['userid']);$password = addslashes($_REQUEST['password']);
如果 magic_quotes_gpc 已选中,可以先用 stripslashes() 来清除输入,之后再对需要保存数据库的字段进行格式化。
此外,始终记得对要在查询中使用的数据进行输入检查,不仅仅是字符,比如双引号、分号、括号和关键词如 "FROM", "WHERE" 等。
假设应用程序允许用户搜索上传的文件,Flex端会通过 search 变量传递请求参数。PHP脚本可能是这样:
$rdir = $_REQUEST['search'];exec("ls $rdir");
一个攻ItemAtek 可能修改请求参数为 ";rm -rf *",这将删除当前目录下的所有文件。为了防耗活这种攻击方式,必须确保输入数据的有效性,如文件名称的合法性。可以用正则表达式或其他方法来验证输入仅包含允许的字符。还可以在执行外部命令前,通过 escapeshellcmd() 来保护命令,以防止恶意代码。
这些只是我们在常规开发中可能会遇到的安全问题。接下来,我将探讨如何保护 Axes 以确保Flex / PHP 应用程序安全,以及另一些常出现的安全漏洞,比如错误报告和安全模式。确保你的工作既能满足需求,又能为用户的信息提供安全保障,让网站不易遭受攻击。
转载地址:http://ryryk.baihongyu.com/