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

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

最佳答案

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

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

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

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

关于php - mysql_real_escape_string(htmlspecialchars()) 真的有用吗?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7158668/

相关文章:

mysql - 从单个 SELECT 结果中插入多行

php - Paypal IPN开发

php - 使用 Curl 登录网站,转到链接,再次提交表单并获取输出

python - django.db.utils 中的 IntegrityError #1062 - 键 2 的条目重复

mysql - SQL:从连接表中查找总计

mysql - SQL 使用参数/值对解析一个长的 varchar 字段

php - 递归函数返回空值

php - array_keys 在 laravel 中不起作用

php - SQL 查询在表中显示时丢失数据

java - 如何将java对象传递给mysql存储过程