【问题标题】:Accepting PHP in a textarea may be too dangerous, trying to find another solution在 textarea 中接受 PHP 可能太危险,试图找到另一种解决方案
【发布时间】:2012-05-10 14:57:28
【问题描述】:

我在寻找某种方式来接受下面的数据以及能够在 PHP 或 Python 中将其解析为数组等方面遇到问题。

$data = array(
    'full_name' => array('name'=>'Full Name', 'type'=>'textarea'),
    'company' => array('name'=>'Organization', 'required'=>true),
}

该内部数组中有更多字段,并且它们的显示方式没有固定顺序。

我有什么方法可以解析来自 textarea 的用户输入并能够将其用作数组吗?或者关于如何处理它的任何其他想法?

【问题讨论】:

  • 您可以允许他们发布您想要的所有代码,只需对代码进行 html 编码/转义,以便他们发布的内容不会立即执行或针对服务器运行。然后你可以稍后解析它并执行它并吹走你自己的东西。至少你会知道是谁运行了被注入的错误代码。
  • 是否需要作为数组输入?如果没有,YAML 会做得很好。
  • @MikeMcMahon - 我认为这个想法是数组随后作为PHP运行,这就是为什么我认为应该接受另一种格式,然后转换为数组。
  • 您允许用户直接提交 PHP 的原因是什么?使用一个用户可以添加“框”并输入数组内容的界面怎么样?
  • @halfer 绝对是,我有点搞笑:)!最好的办法是按照建议使用 JSON 或其他一些中间安全格式。

标签: php python arrays input


【解决方案1】:

如果我了解您的需要,

这就是 json 的用途!

看看这个使用您的数据的快速示例http://codepad.org/17jxHjeY

您可以轻松地传递对象和数组。

迈克

【讨论】:

    【解决方案2】:

    在 Python 中,您可以使用 ast.literal_eval 将字符串安全地解析为字典。

    【讨论】:

      【解决方案3】:

      如果使用 JSON 作为输入格式呢?这很容易解析,不会有安全风险。

      【讨论】:

        猜你喜欢
        • 2012-02-15
        • 1970-01-01
        • 2018-03-30
        • 1970-01-01
        • 2012-05-20
        • 2016-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多