Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Помогите зашитить скрипт, Защита отSQL-inj MSSQL
 
Ещё раз прошу прощения за тупой вопрос, но незнаю как реализовать.

Нужно проверять введенные данные пользователя чтобы защетится от SQL-inj
Говорю сразу addslashes не предлогать.
Так-как по непняной пречине на MSSQL работает очень криво.

Подскажите способ как защетится но при учете того что пользователь должен использовать спец символы.


==================
Вобщнм принемаю любые варианты решения

PS: Язык php.

Предложите хороший метод защиты от SQL-inj

PS2 :Кодировать символы некатит так-как это база одной онлайн игры и я немогу её редактировать то как данные хранятся в базе потомучто допустим пользователь зарегался с ником >l<izn- в базе он сохранился как %3El%3Cizn- и поэтому пользователю предётся вводить %3El%3Cizn- чтобы войти в игру.

Каие символы надо фильтровать для защиты понятно что " ' + какие ещё?

Вобщем предлогайтесвои идеи
 
1) юзать параметризованные запросы (ту убиваем двух зайцев сразу: не забиваем кэш запросов в базе хламом, а полезными и используемыми конструкциями)
2) почти не паримся по поводу SQL injection (правда остаётся открытым вопрос вывода результатов обратно, но это у же не sql injection)
3) используем метод quote хэндла бд (честно, но не помню как это звучит в пхп), а не бд независимое предохранение
4) ну и, конесно, удаляем из строки все символы, которые не разрешены явно (или просто шлём пользователя лесом, при нахождении оных)
 
А теперь поподробнее плзз  ;)
 
Ну во первых если, magic quote включены (а по умолчанию они включены), то " и ' уже слешатся и тебе нужно только не забывать закавычивать параметры в запросе ну и действительно отслеживай типы параметров, и не стоит забывать про XSS: либо strip_tags, либо htmlspecialchars. - лучше второе - надёжнее.
Код
<?
$user=htmlspecialchars($_POST['user']);
$id=intval($_GET['id']);
query("SELECT * FROM users WHERE user='$user' AND id='$id';");
?>
 
хех, вот и у этих диких людей кавычки слешатся, причём даже слишком много раз.
 
есть функция   mysql_escape_string(string);
 
Цитата
есть функция mysql_escape_string(string);
А в MSSQL есть её аналог mssql_escape_string(string);  ???
 
сервер Muonline или Lineage ? ( не простое любопытство )
Страницы: 1
Читают тему