Как уже говорили другие, mysql\_real\_escape\_string()
- самый безопасный метод предотвращения внедрения SQL. Я использую пользовательский класс интерфейса БД для всего своего SQL, который передает все необходимые переменные через функцию sanitize()
. Вот та функция очистки, которая была удалена из класса на случай, если вы захотите взглянуть на нее.
/**
* Sanitize variable for querying
*
* @param mixed $var The variable to sanitize
* @param bool $deep Will inspect the string deeper, converting 'null' to NULL and adding '' around strings
* @param mixed $numstrings Whether or not to treat numbers as strings (ie add quotes)
* @return $var
*/
function sanitize($var, $deep = true, $numstrings = false) {
if (is_array($var)) { //run each array item through this function (by reference)
foreach ($var as $key=>$val) {
$var[$key] = sanitize($val, $deep, $numstrings);
}
}
else if (is_null($var) || ( $deep && preg_match('/^null$/i', $var) > 0 ) ) { //convert null variables to SQL NULL
$var = "NULL";
}
else if (is_bool($var)) { //convert boolean variables to binary boolean
$var = ($var) ? 1 : 0;
}
else if ($numstrings && is_string($var)) {
$var = mysql_real_escape_string($var);
if ($quotes) {
$var = "'". $var ."'";
}
}
else if (!is_numeric($var)) { //clean strings
$var = mysql_real_escape_string($var);
if ($deep) {
$var = "'". $var ."'";
}
}
return $var;
}
Что касается «включения локального файла», я использую два разных метода. Имейте в виду, что самый безопасный метод - хранить конфиденциальные файлы в недоступном для Интернета месте.
Если это всего лишь файл или я не хочу, чтобы мир его видел, я просто добавляю «.ht» к имени файла. Apache по умолчанию запрещает доступ к файлам, начинающимся с '.ht'. Просто убедитесь, что ваши файлы не совпадают с именами конфигурационных файлов Apache (.htaccess, .htpasswd и т. Д.).
Если у вас есть несколько файлов, к которым вы не хотите обращаться, храните их все в подкаталоге вашего сайта (опять же, конфиденциальные файлы должны быть в другом месте). Затем в подкаталоге добавьте файл .htaccess, который запрещает доступ к каталогу (они все еще доступны через PHP).
#this is all you need in the file
Order Allow , Deny
Deny from all