是否可以将$ _POST视为单引号而不是双引号?

时间:2018-05-05 14:33:42

标签: php validation security post

我有一个名为$_POST的{​​{1}}字段,其中包含从HTML表单发布的密码。它经历的前两个检查是:

password

问题在于,如果帖子包含美元符号if(isset($_POST['password'])){ if(strlen($_POST['password'])>=8){ ,则忽略其后面的所有内容,包括美元符号。我可以看到这一点,因为如果发布($)之类的内容,odte$tPa55word只返回strlen。我认为这是因为4将内容视为双引号字符串$_POST['password']而不是单引号(""),这意味着$被解释为变量后的所有内容。

我找到了一个对('')的解决方案,但问题是我不知道后面的addcslashes()是否忽略这些斜线或它是否会响应它们。

问题是,是否有某种方法可以处理preg_match变量,例如单引号字符串rater然后双引号stings以使输入更安全,如果这不可能那么我应该使用什么样的转义语句让这样的事情不会发生?

修改

完整代码:

$_POST

请求:

<?php
    if(isset($_POST['password'])){
        if(strlen($_POST['password'])>=8){
            if($_POST['password']===$_POST['passwordConfirm']){
                $password=password_hash($_POST['password'], PASSWORD_BCRYPT);
            }
            else{
                echo('Err3');
            }
        }
        else{
            echo('Err1: '.strlen($_POST['password']));
        }
    }
    else{
        echo('Err0');
    }
?>

返回:

curl -v -d "password=odte$tPa55word" -w "\n" -X POST http://localhost:8888/test.php

0 个答案:

没有答案