PHP输出的最佳实践

时间:2010-11-18 10:14:10

标签: php encoding

我想知道,下面这个例子中的最佳做法是什么。

<?php

if(isset($_POST['query'])){
  $out = $_POST['query'];
}

?>
<div><?php echo $out; ?></div>
<input type="text" value="<?php echo $out; ?>" />

使用上述代码会对网站构成威胁。或者我需要在使用之前准备输出,如上所述。准备我的意思是编码或转义特殊字符。

我知道你需要逃避它并验证数据库使用的输入,如何输出它?

3 个答案:

答案 0 :(得分:3)

是的,因为你要把它放到HTML中,你应该使用htmlspecialchars适当地使用编码HTML的特殊字符:

if (isset($_POST['query'])) {
    $out = htmlspecialchars($_POST['query']);
}

除此之外,$out仅在$_POST['query']存在时定义;如果$_POST['query']不存在,您应该考虑使用默认值。因为否则,当启用register globals时(仅此一点是个坏主意),您可以通过带有?out=…的URL查询字符串设置该变量。

答案 1 :(得分:2)

是的,你应该使用php函数htmlspecialchars http://php.net/manual/en/function.htmlspecialchars.php

另外,请看这个(接受的答案)

Do htmlspecialchars and mysql_real_escape_string keep my PHP code safe from injection?

答案 2 :(得分:1)

不知道最佳实践,这取决于我喜欢三元组的编码器

echo (isset($_POST['query']))? htmlspecialchars($_POST['query']):"";