我对 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时,它不会工作
答案 0 :(得分:0)
你必须首先明确目的。没有全方位的逃避。
htmlspecialchars
或htmlentities
将用户输入显示为 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_*
个功能全部已弃用。您最好使用PDO
。 PDO
为我们提供了准备好的语句和占位符,而不是转义。
<强> PHP Manual - PDO::prepare 强>