2016-02-12 78 views
0

我需要一个只有3个字母的参数传递给bash脚本。PHP GET安全

如果我只是将所有内容切成3个字母以上,它足够安全吗?

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

我想不出一种方法来利用这个,但谁知道。

+0

解释什么你到底需要做什么? – Deepak

+0

这取决于很多事情。我甚至不知道从哪里开始。 – Phiter

+0

消毒数据通常是一个坏主意。只要测试它的合法性,如果不合法就把它扔掉。 – maxhb

回答

2

我不认为这是安全的。谁知道bash中的三个字符可能是什么?

正则表达式如何指定允许的字符?这可能是更安全的方法。

使用正则表达式过滤器:

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

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

谢谢,这实际上是有道理的 – Heliosh

0

你应该根据你将要使用它的内容(可能是MySQL查询)转义输入。如果输入不正确而不是仅仅是剪切它,那么返回错误信息可能会更好,因此使用脚本的人知道错误发生了什么,如果他意外通过或者没有错误输入。