微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL注入,引号和PHP

如何解决SQL注入,引号和PHP

没有什么比“普遍消毒”。让我们称其为 quota ,因为这就是全部。

引用时, ,例如:

  1. mySQL查询的字符串值
  2. like mySQL查询表达式
  3. HTML代码
  4. json
  5. MysqL正则表达式
  6. PHP正则表达式

对于每种情况,您都需要不同的引用,因为每种用法都存在于不同的语法上下文中。这也意味着 进行 !这就是为什么诸如此类magic_quotes_gpc功能被损坏的原因(请确保始终将其关闭!!!)。

那么,在这些特殊情况下,将使用哪种方法进行报价?(随时纠正我,可能会有更多现代方法,但是这些方法我有用)

  1. MysqL_real_escape_string($str)
  2. MysqL_real_escape_string(addcslashes($str, "%_"))
  3. htmlspecialchars($str)
  4. json_encode()-仅适用于utf8!我将函数用于iso-8859-2
  5. MysqL_real_escape_string(addcslashes($str, '^.[]$()|*+?{}')) -在这种情况下,您不能使用preg_quote,因为反斜杠将被转义两次!
  6. preg_quote()

解决方法

我现在很困惑,想知道,如果您能为我解决问题。

在最新的Anon / Lulsec攻击之后,我开始质疑php / mysql的安全性。

所以,我想,我该如何保护PHP和Mysql。

问题:谁能向我解释,关于引号,处理PHP和Mysql的 最佳实践 是什么?

  • 尤其是在表单中,为了保护html,我需要某种htmlspecialchars,对吗?
  • 可以使用表单完全利用PHP吗?是否需要任何保护?
  • 我应该使用real_escape_string 只是 一个查询之前?在PHP中已经使用它是错/不好(请参见sanitize_post函数)?

目前,我正在使用以下功能。该函数“清除”所有$ _POST和$ _GET变量。这是“安全”的吗?

function sanitize_post($array) {
    global $db;
    if(is_array($array)) {
        foreach($array as $key=>$value) {
            if(is_array($array[$key])) {
                $array[$key] = sanitize_post($array[$key]);
            } elseif(is_string($array[$key])) {
                $array[$key] = $db->real_escape_string(strtr(stripslashes(trim($array[$key])),array("'" => '','"' => '')));
            }
        }            
    } elseif(is_string($array)) {
        $array = $db->real_escape_string(strtr(stripslashes(trim($array)),'"' => '')));
    }
    return $array;
}

我正在将PHP 5.3.5与Mysql 5.1.54一起使用。

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。