Задать вопрос

Защита от SQL инъекций

Написал небольшую функцию на PHP:

function sql_guard($method, $query, $type)
{
	if ($method == 'POST')
		$safe_text = ($type == 'int') ? intval($_POST["$query"]) : addslashes($_POST["$query"]);
	elseif ($method == "GET")
		$safe_text = ($type == 'int') ? intval($_GET["$query"]) : addslashes($_GET["$query"]);
	else
		$safe_text = ($type == 'int') ? intval($_REQUEST["$query"]) : addslashes($_REQUEST["$query"]);

	return $safe_text;
}


Применяется так:
$var1 = sql_guard('POST', 'input1');
$var2 = sql_guard('POST', 'input2', 'int');


Думаю, что она делает объяснять не стоит. А теперь, собственно, у меня вопрос о целесообразности использования такой функции. Не проще ли (а может быть правильнее) делать addslashes или intval в самом теле запроса? Или это дело вкуса?

Также хотелось бы узнать, какие еще способы защиты от инъекций нужно использовать. Да и вообще, общие советы по безопасности.
  • Вопрос задан
  • 5652 просмотра
Подписаться 4 Оценить Комментировать
Ответ пользователя zexel К ответам на вопрос (6)
zexel
@zexel
mysql_real_escape_string
intval
Только этими функциями пользоваться нужно, intval для цифр, а вот mysql_real_escape_string для всех остальных видов… даю гарантии что подобным образом не будет sql injection
Ответ написан
Комментировать