直接使用$ _POST ["x"]或复制到局部变量然后使用?

3 php standards post

考虑以下一对片段,两者基本上都是一样的.

<html>
<body>
    <?php
    if(isset($_POST["firstName"]) && isset($_POST["lastName"])){
    //I'm copying the POST variable to a local one.
    $firstName = $_POST["firstName"];
    $lastName = $_POST["lastName"];     
    echo "<h1>Thank you for taking the census!</h1>";
    echo "On behalf of Sergio's Emporium, we name you: " . $firstName . $lastName . ", conquerer of worlds!";
    //Here I'm just pulling it from the POST info.
    echo "I think that's fitting since you're a " . $_POST["item"];
    }
    else {      
    echo "You didn't write in the necesarry information.";      
    }
    ?>
</body> 
</html>
Run Code Online (Sandbox Code Playgroud)

哪个更好(从安全角度来看)使用哪个,以及鼓励哪个标准使用哪个更好.

因为我是PHP的新手,所以这就是我的链条.多谢你们!:)

Pas*_*TIN 7

我会说这两个解决方案都没有从安全的角度改变任何东西,只要你正确:

  • 过滤/验证输入
  • 和Escape输出.

在这里,当您输出一些HTML时,可能有助于转义数据htmlspecialchars,例如;-)


为方便起见,有些人喜欢考虑:

  • $_POST 包含原始输入
  • 并且一些局部变量用于包含过滤的输入 - 即您可以在其余的脚本中"安全地"使用.