如果在if语句中使用$ _POST数据,我应该清理吗?

问题描述:

我正在一个网站上实现一个简单的封闭区域。 输入正确密码后授予访问权限。密码是共享的,所以没有真实账户。 我想了解,如果我错过了一些变量过滤,如果我应该消毒数据。我很确定我必须这样做,但我不知道什么是最好的方法。

在我的代码,我有两个地方我用从$ _POST变量的数据:

if(isset($_POST)&&$_POST['the_password']!="") 
{ 
    $my_password = $_POST['the_password']; 
    //Should i use something like this? 
    //$my_password = filter_input(INPUT_POST, 'the_password', FILTER_SANITIZE_STRING); 
} 

第二个地方是我使用的变量,在if语句:

if($a_password == $my_password) 
{ 
    //Query using the $a_password variable 
} 

在这部分代码中,$ a_password来自硬编码查询。

filter_input函数是否正确?我错过了什么吗?

+0

消毒是什么? – 2014-12-07 12:12:04

+0

由于您对安全性似乎并不太在意,所以消毒也许是过量的。 – 2014-12-07 12:13:26

+0

将SHA1($ _ POST [“password”])与'StoredSHA1Hash'进行比较。 – DavChana 2016-02-09 18:22:13

简短的回答是否定的;对于if声明,您的代码是安全的。

但是,如果稍后编辑代码,则应该在数据库查询中使用预准备语句。