VARCHAR: Подготовка данных перед загрузкой в базу

glukerrr

Guest
VARCHAR: Подготовка данных перед загрузкой в базу

Добрый день!

Я получаю некую строчку, сомнительного содержания

$str = getSomething(...);

И кладу ее в базу

...

$query = "INSERT INTO table (..., smthstr, ...) VALUES (..., '$str', ...);";

...

колонка smthstr имеет тип VARCHAR(255). На какие неприятности (ошибки в SQL-запросе) я могу нарваться???

Ну первая моя ошибка это отсутствие проверки длины $str перед тем как ее положить.
А еще ?
Нужно ли проверять на наличие одиночной кавычки - " ' " ? Если надо, то зачем?

Что такое SQL Injection ?
 

tony2001

TeaM PHPClub
addslashes, если эта строка не была предварительна заслэшена с помощью magic_quotes.
 

Demiurg

Guest
проверять на длину не обезательно, mysql сам отрежет сколько ему надо.
 

f1

formula 1
Автор оригинала: Demiurg
проверять на длину не обезательно, mysql сам отрежет сколько ему надо.
и как начнут у тебя посылаться к мусклу запросы по несколько мегов :)
лишняя нагрузка
 

Demiurg

Guest
>и как начнут у тебя посылаться к мусклу запросы по несколько мегов
у меня ничего не начнется. с чего это они будут несколько мегов ?
 

f1

formula 1
"строчка сомнительного содержания" из формы может быть "какой угодно" длины
есть любители постить такие "строчки" :)
 

f1

formula 1
согласись не очень правильно слать для заполнения VARCHAR(255) мегабайтный запрос :)
 

Demiurg

Guest
а я и не шлю никогда ...
если какому то идиоту взбредет в поле мегабайтный текст запихнуть, то это его проблемы, и случается такое не чаще раза в год.
 

f1

formula 1
в том и дело, что идиоту может взбрести,
может раз в год, может никогда

а может постоянно и часто :)
 

Demiurg

Guest
ну и что ?
У меня канал потолще, так что мне не жалко.
 

f1

formula 1
дело же не в канале,
а в передаче этого самого мегабайта между php и MySQL

или памяти у тебя не ограничено?

php под это дело мегабайт выделит,
и mysql мегабайт, и того уже 2 :)

а прийдет через твой очень толстый канал много таких запросов, что тогда?
 

Demiurg

Guest
причем тут mysql ????
причем тут запросы ????
точно так же я могу послать огроменный пост на сайт, который вообще ни использует базы данных, и точно так же он выделит кучу памяти.
 

f1

formula 1
при том что запросы в мускл ты шлешь сам, а не кто то со стороны
и от тебя зависит, послать мегабайт или 255 байт

если по твоему разницы нет,
то и волноваться не стоит :)))
 

glukerrr

Guest
господа, так что и зачем делать addslashes ? А как потом вынимать из базы? Что делать? Unslash какой-нибудь?

И что такое SQL-Injection ?
 

Demiurg

Guest
у тебя паранойя в легкой форме.
если хочешь, обрезай запросы никто тебе не мешает.
 

f1

formula 1
а у тебя раздолбайство в легкой форме.
если хочешь, не обрезай запросы никто тебе не мешает.

:)
Кстати, ты с какой стороны яйца разбиваешь? :)
 

Demiurg

Guest
>Кстати, ты с какой стороны яйца разбиваешь?
с внешней
 
Сверху