$_POST和$_GET变量安全没有数据库


$_POST and $_GET variables security without database

如果您的应用程序没有使用数据库,但您在代码中'echo'或使用$_POST或$_GET变量,我们需要转义它们吗?

:

if(isset($_GET['test']){
  echo $_GET['test'];
}

function math(){
if(isset($_GET['number'],$_GET['numberr']){
  return $_GET['number']*$_GET['numberr'];
}
return null;
}

即使使用数据库,也需要在打印前转义或清除它们。有些人可能会偷偷地加入一些乱七八糟的HTML,比如<b>会让整个页面变粗,或者<script>alert('hello');</script>会运行Javascript。

echo htmlspecialchars($_GET['test']);

这将取代你所有的<与&lt;和>与&gt;,使HTML将被视为文本而不是HTML,不会弄乱你的页面。

您应该转义它们。此外,您应该使用正则表达式来限制变量内容,并防止"意外"字符。

编辑:很抱歉把这个作为一个答案,我目前不允许评论问题。