PHP编程功能安全文章
有人说你的PHP安全无非是做什么的注入和跨站,完全错了,如果是这样的话,一个magic_quotes_gpc服务器的一些安全设置,还是让我们没有办法:(。今天我要说的是没有注入,跨站,但是在一些安全细节在PHP program.ok!切入要点吧。
注意对某些函数的过滤
有些功能是经常使用的程序,如包括()(),需要(),(),()函数库,ReadFile(),断开(),(),评价及其变体的功能等等,这些功能都很实用,实用并不意味着你必须拯救你的心,你要在他们身上花很多钱。:)
1.include(),要求()和(),include_once fopen(),require_once(),这些可以远程调用文件。对他们来说,谷歌会搜索你。你们要知道如果所包含的变量没有过滤,可以包含任何文件并执行。例如,看看print.php
…
如果(空($)){变量/变量是空的
包括(cfg_dir美元/ site_ $ {网站}。php); / /把美元cfg_dir路径site_ {网站} PHP包含美元。
…
无论cfg_dir美元目录存储或不,$网站是一个变量,你可以使用自然的,因为他不检查$网站变好。你可以指定变量$网站远程文件调用,或者你可以是一个本地文件。在指定的文件中指定PHP语句,然后包含执行包含PHP语句的文件。就像这样。
文件列表,甚至可以扩展到包括一些管理员文件提高权限,通常像以前的phpwind,博博客的漏洞。除了根据allow_url_fopen在php.ini,是禁止的,远程的文件和open_base_dir禁止使用非目录文件。你必须预先声明哪些文件只能包含,所以这里没有什么要说的。
2.fopen(),文件(),(),使用ReadFile(),等等。函数本身是什么。函数的作用是打开文件,但是如果变量没有被彻底过滤,源代码就会被泄露,将会有很多这样的功能文本论坛。
…
articlearray美元= openfile(mdbquot美元/美元/美元FID TID。php); / / / mdbquot美元美元美元FID打开路径tid.php文件
topic_detail =爆炸(|美元,美元articlearray { 0 }); / /使用阅读后的|分隔符的内容
…
非常熟悉,这是以前的版本制作read.php,FID和美元美元没有任何过滤的TID,TID美元是一个指定的文件,有泄漏的原代码。是这样的。
同时美元将被添加到PHP的后缀,所以指数是直接写。这只是一个例子,然后看看它。
3.fwrite()及其变体功能,认为这是不可能写一个用户谁不过滤提交的字符PHP后门。
4.unlink()函数,在早些时候,phpwind删除任何文件的任何方式。它使用这个函数过滤决定是否删除的变量。变量可以指定为任何文件,当然,它们可以删除任意文件的变量。
5.eval(),preg_replace()函数,其功能是执行PHP代码。如果字符串不再过滤,会发生什么我经常看到一些CMS在它。想起一句php木马基于eval()原则。
6、()系统,这些系统的功能,你会说,系统功能是禁止的。Yes, that's a good way. 但是,像一些节目,他们不需要更多吗就像我上次看到美丽的PHP的专辑。另外,你要特别注意Popen(),(),proc_open proc_close()函数。虽然它们在执行命令后不能直接输出,但您认为这对黑客有用吗在这里,PHP提供了两个功能,escapeshellarg(),()escapeshellcmd。这两个函数用来对抗系统功能的调用攻击,也就是说过滤。
对危害的一个例子,让我们看到一个论坛prod.php
07美元doubleapp = isset($ argv { 1 }); / /初始化变量doubleapp美元
…
14如果($ doubleapp) / /如果声明
{ 15
16美元appdir = $ argv { 1 }; / /初始化appdir美元
17系统(mkdir proddir美元/美元appdir); / /使用系统函数来创建目录proddir美元/美元appdir系统
它是用于创建proddir美元/美元appdir目录。然后好像程序只检测到$ argv { 1 }的存在和缺乏必要的过滤为argv { 1 }。然后你可以这样做。
/ prod.phpargv { 1 } = | LS % 20 La或/ prod.phpargv { 1 } = |猫% 20 / /密码等
(这里是分隔符|管道参数,UNIX可以执行多个命令。)
这里,应该知道常见的漏洞类型。
所以我们不仅要依赖服务器端设置,还要注意后台程序。一般来说,服务器应该有利于建立一个网站,但许多与数据库操作不那么容易控制。