首页 > 解决方案 > file_get_content 是否可以进行注入攻击?

问题描述

class TemplateController
{
    public function get(string $template): string
    {
        return file_get_contents(_DIST . '/resources/templates/' . $template . '.html');
    }
}

我使用 $_GET 或地址栏的直接参数从 SPA 应用程序导入模板。这会导致问题吗?

我在输入周围使用引号来运行推荐以访问无法访问的文件等。

标签: phplaravelfile-get-contentscode-injection

解决方案


有人可以将值传递给$template使用的变量..//导航出您在参数中设置的目录。

从理论上讲,它们可以导航到更易受攻击的目录并访问您不希望它们访问的文件。我想说,最好的方法是验证包含../or/ 如果您知道文件名永远不会包含任何.or字符的输入字符串,您可以对包含任何or字符/的任何字符串抛出验证错误。./

最重要的是,遵循有关在生产服务器上设置用户和权限的最佳实践将有助于保护您。该线程提供了一些有用的帮助: 如何为 Laravel 设置文件权限?

除此之外,我想不出任何其他漏洞......还有其他人吗?


推荐阅读