我可以使用此清理将数据安全地输出给用户

时间:2013-08-08 20:31:04

标签: php javascript xss sanitization

因此,我试图找出清理xss以便安全输出给用户的最佳方法。

或多或少,当从表单存储值时,我使用strip_tags();然后bind_params();

当Im即将输出数据给用户时我也使用htmlentities();

数据只会显示在<p><a>标记内。

例如:

<p> Some data from user </p>

<a href=""> Some data from user </p>

这应该有用吗?

的index.php

<form action="sante.php" method="post">
Name: <input type="text" name="fname">
Age: <input type="text" name="age">
<input type="submit">
</form>

然后是sante.php

<?php

$name = $_POST["fname"]; 
$age = $_POST["age"];

$namn = strip_tags($name); // then storing into mysql with bind_param
$older = strip_tags($age); // then storing into mysql with bind_param


 // before output, htmlentities

   function safe( $value ) {
  htmlentities( $value, ENT_QUOTES, 'utf-8' );

  return $value;
}


// Now showing values

echo safe($namn). "<br>";

echo "<p>" .safe($older) . "</p>";


?>

2 个答案:

答案 0 :(得分:1)

是的,您可以安全地使用此代码。我看到你已经在使用bind_param(我假设mysqliPDO库),这会阻止SQL注入(对你造成伤害)和htmlentities,防止跨站点脚本(对用户造成损害)。

在写入数据库之前,您甚至不需要调用strip_tags,但如果您不希望用户输入包含任何JS / PHP / HTML标记,那么这也是一个好主意(如果你忘了在输出上调用你的safe函数。

答案 1 :(得分:0)

将数据插入数据库时​​,必须使用mysql_real_escape_string或使用PDO, 如果显示数据,则必须使用htmlspecialchars