拥有这样的东西真的有用吗:
$passe = mysql_real_escape_string(htmlspecialchars($_POST['passe']));我们为什么要用这个?如何优化?
谢谢
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("nom_db");
$passe = mysql_real_escape_string(htmlspecialchars($_POST['passe']));
$passe2 = mysql_real_escape_string(htmlspecialchars($_POST['passe2']));
if($passe == $passe2)
{
script here
}
else
{
echo 'Your password is wrong';
}
?>发布于 2011-08-23 17:16:04
在该代码示例中,它一点用处都没有。
htmlspecialchars将HTML中具有特殊含义的字符转换为实体。如果你有一些文本想要插入到一个超文本标记语言文档中,这是非常重要的(例如,当它停止的时候,像<这样的字符会被视为标签的开始,并且可以防止XSS)。
mysql_real_escape_string将MySQL查询中具有特殊含义的字符转换为转义。这使您可以安全地将任意字符串插入到MySQL数据库中(防止出现错误和injection。然而,better ways to do the same thing是有的。
在本例中,您只是比较两个字符串。通过一堆转换来运行它们不会做任何有用的事情。
发布于 2011-08-23 17:18:01
仅当将不受信任的变量传递给数据库查询时才应使用mysql_real_escape_string($var),如下所示:
$query = mysql_query("SELECT * FROM `foo` WHERE `bar` = '".mysql_real_escape_string($_POST['username'])."'");这样做对于防范SQL injection attacks非常重要。
至于htmlspecialchars(),当输出不可信的变量到页面时应该使用它,它会去掉任何超文本标记语言,以防止变量在页面顶部输出不想要的或危险的超文本标记语言(例如javascript)。
在您的示例中,这两个函数都不需要,因为您只是比较它们,而不是将它们放入数据库或网页中。
发布于 2011-08-23 17:17:22
像您一样使用htmlspecialchars()是没有意义的,因为对于字符串:
mysql_real_escape_string(htmlspecialchars($_POST['passe'])) ==
mysql_real_escape_string(htmlspecialchars($_POST['passe2']));等于:
$_POST['passe'] == $_POST['passe2']https://stackoverflow.com/questions/7158668
复制相似问题