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

时间:2014-03-12 22:49:17

标签: php http post get

如果你没有在你的应用程序中使用数据库,但你在代码中'回显'或使用$ _POST或$ _GET变量,我们是否需要逃避它们?

像:

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

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

2 个答案:

答案 0 :(得分:3)

即使您使用数据库,也需要在打印前对其进行转义或清理。有人可能会像<b>一样偷偷摸摸地使你的整个页面变得粗体,或者<script>alert('hello');</script>会运行Javascript。

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

这将取代你所有的&lt;与&lt;和&gt;使用&gt;,以便将HTML视为文本而不是HTML,并且不会弄乱您的网页。

答案 1 :(得分:0)

你应该逃避它们。此外,您应该使用regual表达式来限制变量内容,并防止&#34;意外&#34;字符。

编辑:讽刺发布此答案,我目前不允许对问题发表评论。