如果在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函数是否正确?我错过了什么吗?
答
简短的回答是否定的;对于if
声明,您的代码是安全的。
但是,如果稍后编辑代码,则应该在数据库查询中使用预准备语句。
消毒是什么? – 2014-12-07 12:12:04
由于您对安全性似乎并不太在意,所以消毒也许是过量的。 – 2014-12-07 12:13:26
将SHA1($ _ POST [“password”])与'StoredSHA1Hash'进行比较。 – DavChana 2016-02-09 18:22:13