【问题标题】:PHP GET security [closed]PHP GET安全[关闭]
【发布时间】:2016-02-12 12:41:23
【问题描述】:

我需要一个只有 3 个字母的参数才能传递给 bash 脚本。

如果我只剪掉超过 3 个字母的所有内容是否足够安全?

$var = $_GET['var'];
$var = substr($var, -3);

我想不出办法来利用它,但谁知道呢。

【问题讨论】:

  • 解释一下你到底需要做什么?
  • 这取决于很多事情。我什至不知道从哪里开始。
  • 清理数据通常是个坏主意。只需测试它是否合法,如果不合法就扔掉。
  • 字符数或GET方法对安全性有一点影响。问题是你如何处理输入以及你做什么......

标签: php security get


【解决方案1】:

我认为这不安全。谁知道 bash 中的三个字符会发生什么?

用正则表达式来指定允许的字符怎么样?这可能是一种更安全的方式。

使用正则表达式过滤器:

$var = filter_var($_GET['var'], FILTER_VALIDATE_REGEXP,
array("options"=>array("regexp"=>"--- your regex ---")));

if($var!==false) {
  // pass to bash
}

【讨论】:

  • 谢谢,这确实有道理
【解决方案2】:

您应该根据您的用途(可能是 MySQL 查询)对输入进行转义。如果输入不正确,最好返回一条错误消息而不是直接删除它,这样使用脚本的人就知道如果他意外通过或不是错误输入,什么时候出错了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2011-04-17
    • 1970-01-01
    • 2017-12-26
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多