如何解决SQL注入,引号和PHP
没有什么比“普遍消毒”。让我们称其为 quota ,因为这就是全部。
引用时, ,例如:
对于每种情况,您都需要不同的引用,因为每种用法都存在于不同的语法上下文中。这也意味着 进行 !这就是为什么诸如此类magic_quotes_gpc
的功能被损坏的原因(请确保始终将其关闭!!!)。
那么,在这些特殊情况下,将使用哪种方法进行报价?(随时纠正我,可能会有更多现代方法,但是这些方法对我有用)
MysqL_real_escape_string($str)
MysqL_real_escape_string(addcslashes($str, "%_"))
htmlspecialchars($str)
-
json_encode()
-仅适用于utf8!我将函数用于iso-8859-2 -
MysqL_real_escape_string(addcslashes($str, '^.[]$()|*+?{}'))
-在这种情况下,您不能使用preg_quote,因为反斜杠将被转义两次! 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 举报,一经查实,本站将立刻删除。