Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 包含语句中用户输入的硬编码文本-易受LFI攻击?_Php_Security_Code Injection - Fatal编程技术网

Php 包含语句中用户输入的硬编码文本-易受LFI攻击?

Php 包含语句中用户输入的硬编码文本-易受LFI攻击?,php,security,code-injection,Php,Security,Code Injection,我正在考虑将文件包含到脚本中,该脚本的名称基于cookie 大概是这样的: include("sometext".$mycoockie_here."some_text.php"); 上述代码是否容易受到此类攻击即使使用“sometext”和“sometex.php”硬编码?当然是这样。每个人都可以调整发送到web应用程序的Cookie的值。想象一下,有人给你发送了一个包含内容的cookie /../../../../etc/passwd[null-byte] 因此,您将以路径结束 somet

我正在考虑将文件包含到脚本中,该脚本的名称基于cookie

大概是这样的:

include("sometext".$mycoockie_here."some_text.php");

上述代码是否容易受到此类攻击即使使用
“sometext”
“sometex.php”
硬编码?

当然是这样。每个人都可以调整发送到web应用程序的Cookie的值。想象一下,有人给你发送了一个包含内容的cookie

/../../../../etc/passwd[null-byte]
因此,您将以路径结束

sometext/../../../../etc/passwd[null-byte]some_test.php
PHP文件处理函数将路径传递给操作系统,操作系统使用以null结尾的字符串,因此最终将包含

sometext/../../../../etc/passwd

这可能是你不想要的。

当然。每个人都可以调整发送到web应用程序的Cookie的值。想象一下,有人给你发送了一个包含内容的cookie

/../../../../etc/passwd[null-byte]
因此,您将以路径结束

sometext/../../../../etc/passwd[null-byte]some_test.php
PHP文件处理函数将路径传递给操作系统,操作系统使用以null结尾的字符串,因此最终将包含

sometext/../../../../etc/passwd

这可能是您不想要的。

为了防止出现警告,我会先调用
file\u exists()
以确保资源存在,然后再包含它。但是周围的对象使得某人不可能做像
include'/etc/passwd'这样的事情
为了获得更大的保证,在文件名前面编写一个物理路径,这样它就只能来自一个目录?如果您正确验证您的输入,那么就没有理由有任何顾虑。什么都不要相信@金:非常明智的建议:)嗯,我希望能轻松上路(不用验证饼干)。但看起来现在不可能了。谢谢你们的回答,伙计们!谢谢。@nav:真的没那么难。只要做一个
if(!preg_match('/^[a-z]+$/',这里是$mycokie_))退出()为了防止出现警告,我会先调用
文件\u exists()
以确保资源存在,然后再包含它。但是周围的对象使得某人不可能做像
include'/etc/passwd'这样的事情
为了获得更大的保证,在文件名前面编写一个物理路径,这样它就只能来自一个目录?如果您正确验证您的输入,那么就没有理由有任何顾虑。什么都不要相信@金:非常明智的建议:)嗯,我希望能轻松上路(不用验证饼干)。但看起来现在不可能了。谢谢你们的回答,伙计们!谢谢。@nav:真的没那么难。只要做一个
if(!preg_match('/^[a-z]+$/',这里是$mycokie_))退出()