首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >mysql_real_escape_string是否足以清理用户输入?

mysql_real_escape_string是否足以清理用户输入?
EN

Stack Overflow用户
提问于 2010-03-01 11:06:09
回答 5查看 30.2K关注 0票数 58

在大多数情况下,mysql_real_escape_string是否足以清理用户输入?

::编辑::

我主要考虑防止SQL注入,但我最终想知道,在应用mysql_real_escape_string之后,我是否可以信任用户数据,或者在将数据传递给应用程序和数据库之前,是否应该采取额外措施来清理数据。

我知道清理HTML字符很重要,但我不认为这对于信任用户输入是必要的。

T

EN

回答 5

Stack Overflow用户

发布于 2010-03-01 11:13:05

mysql_real_escape_string()仅用于防止SQL注入攻击。它不会帮助你防止跨站点脚本攻击。为此,您应该在输出最初从用户输入中收集的数据之前使用htmlspecialchars()

票数 2
EN

Stack Overflow用户

发布于 2010-03-01 11:16:57

有不同类型的“清洁”。

对于数据库数据,mysql_real_escape_string就足够了,但如果它是HTML语言,则浏览器在显示时仍将对其进行计算。

要从用户输入中删除超文本标记语言,可以使用strip_tags

我建议您考虑使用PDO而不是常规的MySQL内容,因为它支持开箱即用的预准备语句,并且可以为您处理无效数据的转义。

票数 1
EN

Stack Overflow用户

发布于 2012-05-12 05:29:31

您可以同时尝试这两种方法,如

代码语言:javascript
复制
function clean_input($instr) {

     // Note that PHP performs addslashes() on GET/POST data.
     // Avoid double escaping by checking the setting before doing this.
    if(get_magic_quotes_gpc()) {
        $str = stripslashes($instr);
    }
    return mysql_real_escape_string(strip_tags(trim($instr)));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2353666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档