mysql_real_escape_string(htmlspecialchars())真的有用吗?为什么?

时间:2011-08-23 09:11:50

标签: php mysql sql security

有这样的东西真的很有用:

$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';
}
?>

5 个答案:

答案 0 :(得分:6)

在该代码示例中,它根本没用。

htmlspecialchars将HTML中具有特殊含义的字符转换为实体。如果您要将某些文本插入到HTML文档中(因为它会停止,例如<等字符被视为标记的开头,并且防止XSS),这一点非常重要

mysql_real_escape_string将MySQL SQL查询中具有特殊含义的字符转换为转义符。这允许您安全地将任意字符串插入MySQL数据库(防止错误和injection。但是,better ways to do the same thing

在这种情况下,您只是比较两个字符串。通过一系列转换来运行它们不会有任何用处。

答案 1 :(得分:1)

在将不受信任的变量传递给数据库查询时,您应该只使用mysql_real_escape_string($var),如下所示:

$query = mysql_query("SELECT * FROM `foo` WHERE `bar` = '".mysql_real_escape_string($_POST['username'])."'");

这样做很重要,以防范SQL injection attacks

对于htmlspecialchars(),当输出不可信变量到页面时,应该使用它,它将删除任何HTML以防止变量在页面顶部输出不需要的或危险的HTML(javascript例如)。

在您的示例中,您既不需要功能,也不需要比较它们,也不会将它们放在数据库或网页上。

答案 2 :(得分:0)

像你一样使用htmlspecialchars()毫无意义,因为对于字符串:

mysql_real_escape_string(htmlspecialchars($_POST['passe'])) == 
    mysql_real_escape_string(htmlspecialchars($_POST['passe2']));

与...相同:

$_POST['passe'] == $_POST['passe2']

答案 3 :(得分:0)

使用htmlspecialchars可以保护您免受xss的攻击,但是有旁路方法 如果你要将这个词添加到url

`链接名称';

绕过将使用javascript onmouseout onhover else这需要关闭magic_qutoes


addslashes&amp; mysql_real_escape_string保护免受sql注入

忽略'"引号

但是以小写字母

后删除这些单词的好方法

平均  $ username = strtolower($ _ GET ['ser']);  if(preg_match(“(select | and |或| union | into | from | information | schema | .user | concat | group)\”,$ username)){  死(“错误:黑客入侵”); }

答案 4 :(得分:0)

pastebin中的完整代码显示变量稍后用于数据库查询。

mysql_query("INSERT INTO validation VALUES('', '$pseudo', '$passe', '$email')"); 

mysql_real_escape_string()在这里必须; htmlspecialchars不是,因为@Quentin在上面解释得非常好。

如果您插入的内容在HTML页面上输出,请在输出中稍后使用htmlspecialchars