[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как защититься от sql-иньекции?
Brajt
мне недавно человек прислал пароль от пользователя Admin на сайте, говорит может узнать любой пароль. я так понял, он их узнает через sql-иньекцию. подскажите, каким способом можно защититься от иньекций?



Спустя 14 минут, 19 секунд (11.03.2011 - 01:36) Invis1ble написал(а):
Brajt
читай

Спустя 11 часов, 55 минут, 7 секунд (11.03.2011 - 13:32) rocker написал(а):
Попробуй мою функцию

$var = Clear($_POST['var']);


если передаешь массив то

$var = Clear($_POST['var'], true);



function Clear($var,$array=false) {

global $mysql;

if ($array == false) {

$var = trim($var);

$var = htmlspecialchars($var, ENT_QUOTES, 'windows-1251');

if(get_magic_quotes_gpc()) $data = stripslashes($var);

$var = $mysql->real_escape_string($var);

} else {

foreach($var as $key => $value) {

$var[$key] = trim($var[$key]);

$var[$key] = htmlspecialchars($var[$key], ENT_QUOTES, 'windows-1251');

if(get_magic_quotes_gpc()) $data = stripslashes($var[$key]);

$var[$key] = $mysql->real_escape_string($var[$key]);

}

}


return $var;
}

Спустя 8 минут, 23 секунды (11.03.2011 - 13:40) Snus написал(а):
rocker
Каша кашенная biggrin.gif

Спустя 22 секунды (11.03.2011 - 13:40) Zerstoren написал(а):
Цитата (Brajt @ 10.03.2011 - 22:22)
мне недавно человек прислал пароль от пользователя Admin на сайте, говорит может узнать любой пароль. я так понял, он их узнает через sql-иньекцию. подскажите, каким способом можно защититься от иньекций?

Самоеписное или CMS?

Спустя 1 час, 28 минут, 15 секунд (11.03.2011 - 15:09) Brajt написал(а):
самописное.

$result00 = mysql_query("SELECT COUNT(*) FROM categories WHERE rid='int($cat)'");
$result = mysql_query("SELECT id,name,kol FROM categories WHERE rid='int($cat)' ORDER BY id LIMIT int($start), int($num)");
$result = mysql_query("SELECT rid FROM mp3 WHERE name LIKE 'mysql_real_escape_string(%$search%)'");
$result2 = mysql_query("INSERT INTO users (login, pass) VALUES ('mysql_real_escape_string($login)', 'mysql_real_escape_string($pass)')");



выше приведенные запросы правильно составлены? еще не совсем понимаю...

Спустя 9 минут, 17 секунд (11.03.2011 - 15:18) Guest написал(а):
mysql_real_escape_string() от небольших шалостей спасет, странно что не кто не написал это)

Спустя 56 минут, 43 секунды (11.03.2011 - 16:15) Brajt написал(а):
да, забыл написать, там где поставил int, через переменную передается число. а где стоит mysql_real_escape_string, передается текст

Спустя 11 минут, 51 секунда (11.03.2011 - 16:26) twin написал(а):
rocker
Цитата
Попробуй мою функцию

В этой функции супермена явно нехватает strip_tags() и substr($var, 1000000);
Как же такое упущение... Вся безопасность насмарку.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.