html_entities VSs strip_tags与mysql_real_escape_string

时间:2014-07-05 21:01:14

标签: php html-entities mysql-real-escape-string strip-tags

我对 Strip_tags html_entities mysql_real_escape_string 提出疑问。

现在当我使用例如:

strip_tags(mysql_real_escape_string($_POST['username']));

以上代码将是安全的以及:

html_entities($_POST['username']);

对于现实世界的项目,哪一个更安全。

strip_tags mysql_real_escape_string 一起使用有什么好处。但是,当我使用html_entities时,它不会工作

1 个答案:

答案 0 :(得分:0)

你必须首先明确目的。没有全方位的逃避。

htmlspecialcharshtmlentities

目的

将用户输入显示为 HTML

实施例

<div><?php echo htmlspecialchars($_POST['data'], ENT_QUOTES, 'UTF-8') ?></div>

注意

即将显示时使用此功能。不要将其应用于预先存储到变量中。

  

此变量是否已被转义......?

......你可能会麻烦自己。

strip_tags

请勿使用此功能。 SANITIZE是一种错误的方式。

mysql_real_escape_string

目的

SQL 中设置用户输入。

实施例

<?php
$sql = sprintf(
    "SELECT * FROM table WHERE name = '%s' AND address = '%s'",
    mysql_real_escape_string($_POST['name'], $link),
    mysql_real_escape_string($_POST['address'], $link)
);

注意

mysql_*个功能全部已弃用。您最好使用PDOPDO为我们提供了准备好的语句占位符,而不是转义。

<强> PHP Manual - PDO::prepare