【问题标题】:Bad idea to allow user to upload an ini file for parsing?允许用户上传 ini 文件进行解析的坏主意?
【发布时间】:2023-03-11 05:44:02
【问题描述】:

我只是在集思广益,让网站用户在不使用 Web 表单的情况下向网站提交信息。我看到的一个想法是允许用户上传包含用户想要以 ini 格式提交的信息的 ini 文件。然后使用 parse_ini_file 将提交的信息放入一个数组中,然后我可以在站点内验证和使用该数组。

但由于 ini 文件是配置文件,让用户这样做似乎有点吓人。如果,只要所有此类文件都保存在 webroot 之外,权限为只读,名称随机,并且在解析后立即删除,那么从安全角度来看,这样做是不是一种糟糕的方式?

再次,只是头脑风暴,file_get_contents 会是更好的方法吗?

【问题讨论】:

  • 如果 .ini 文件适合您的目的,那没关系 - 它不可执行,而且只有存储在特定位置才会影响配置。
  • 我只是想从ini文件中读取/解析数据,你不必担心安全问题。
  • 我心目中的网站也将有标准的网络表单来获取相同的信息。该网站适用于可以在该网站上创建案件并为他们组织文件的律师。我可以看到一些律师发现只需将一些信息输入到他们计算机上的文件中,将其上传到网站,然后使用他们提交的信息神奇地为他们生成新案件。
  • .ini 只是数据。如果您足够疯狂地支持指令format_hard_drive = yes 并实际执行 .ini 指令所说的,那么它就在您的脑海中。
  • 我不会用 format_hard_drive 键做任何事情。传入的信息是标准化的,解析出来的信息是严格定义的。在调用 parse_ini_file 后,ini 文件中包含的任何内容都将最终出现在数组中,但如果我不提取变量,它应该没有害处?

标签: php file parsing ini


【解决方案1】:

文件就是文件,除非您当然允许程序实际执行内容(不要这样做),扩展名在很大程度上并不重要。但是,您为什么不希望发布表单?如果您说您想要非可视化的数据块发布,那么 JSON 或基于 XML 的解决方案会更合适。使用“.ini”文件上传来提交数据是一个真正的骗局,而不是被认为是最佳实践。

【讨论】:

    【解决方案2】:

    您是否考虑过改用parse_ini_string()?这将使您免于创建临时文件,同时提供同样的解析优势。

    至于安全性,解析任何内容都可能成为问题,但最重要的是在解析完成后进行清理。

    【讨论】:

      【解决方案3】:

      当涉及到非常基本的配置时,我相信 YML。我想我会选择一个大的文本区域而不是上传文件

      【讨论】:

        猜你喜欢
        • 2011-10-20
        • 1970-01-01
        • 2010-10-10
        • 2016-01-01
        • 1970-01-01
        • 2012-11-18
        • 1970-01-01
        • 1970-01-01
        • 2012-01-03
        相关资源
        最近更新 更多