我现在很困惑,想知道,如果你能帮我解决问题。
在最近的 Anon/Lulsec 攻击之后,我质疑我的 php/mysql 安全性。
所以,我想,我怎么能同时保护 PHP 和 Mysql。
问题:谁能解释一下,当涉及到引号时,处理 PHP 和 Mysql的最佳实践是什么?
- 特别是在表单中,我需要某种 htmlspecialchars 来保护 html,对吗?
- 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)), array("'" => '', '"' => '')));
}
return $array;
}
我将 PHP 5.3.5 与 Mysql 5.1.54 一起使用。
谢谢。