База данных. Проверки?

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: База данных. Проверки?

AiK » 25 фев 2004, 12:38

vlanis, ты открытым текстом можешь передавать только alphanumeric. Всё остальное - в виде %hh. Unicode правда четырмя символами кодироваться может. RFC2396, если не путаю.

vlanis » 25 фев 2004, 12:34

AiK писал(а):vlanis, по ссылке, что я тебе привёл, есть пример на Perl.
sub val{
my ($value)=@_][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/A-Za-z0-9\ //dc;
$value =~ s///g;
$value =~ s/[\"\'\%\;\)\(\&\+]//g;
$value =~ s/>/>/g;
$value =~ s/</</g;
$value =~ s/([^\b\s,.]{20})([^\s\b,.])/$1 $2/sig;
$value=~tr/\r\n/ /;
return $value;
}

ну чтоже - наша функция растет не по дням а по часам!!!

vlanis » 25 фев 2004, 12:28

AiK писал(а):vlanis, по ссылке, что я тебе привёл, есть пример на Perl.
Кстати пока я смотрю вопрос оффтопик: нужно передать через адресную строку браузера символ &. как это сделать ведь он служит разделителем параметров?

AiK » 25 фев 2004, 12:04

vlanis, по ссылке, что я тебе привёл, есть пример на Perl.

vlanis » 25 фев 2004, 12:00

&quot писал(а):
(кстати о традиционно рекомендуемых можно чуть поподробнее :) .
sub val{
my ($value)=@_;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s///g;
$value =~ s/>/>/g; #замены скобок <
$value =~ s/</</g;
$value =~ s/([^\b\s,.]{20})([^\s\b,.])/$1 $2/sig; #проверка на длинное слово, и разбиение его для переноса
$value=~tr/\r\n/ /; #замена переводов строки на пробелы
return $value;
}

Первые три на вскидку не помню. Кто дополнит ф-цию валидации? ;)

chur » 25 фев 2004, 11:22

Если параметр в запросе имеет ограниченное количество значений, то удобно пропустить значение параметра через хеш. Например:
кусок в строке запроса ... &rubrika=sport& ...
В программе:

my %rubriks = qw (sport 1 politika 2 business 3 family 4);
if ($rubriks{$rubrika_value}) { // допустимое значение
....
else { // какая-то шняга
....
}

Это позволяет одновременно проверять допустимость значения и, если нужно, подставлять нужное для SQL-запроса значение.

AiK » 25 фев 2004, 10:43

(кстати о традиционно рекомендуемых можно чуть поподробнее :) .
пожалуйста: http://www.cert.org/tech_tips/malicious ... ation.html
там не надо проверять наличие подключения
надо. И резалтсет на непустоту. И диапазон вводимых значений. В некоторых случаях и количество строк в резалтсете.

Yurich » 25 фев 2004, 10:40

vlanis писал(а): это что касается переменных. (кстати о традиционно рекомендуемых можно чуть поподробнее :) . А вот обращение к базе (connect) там не надо проверять наличие подключения?
Конечно надо... а кто иначе это будет делать за тебя?! :D
Как проверять? Тоже все достаточно просто, большинство функций возвращают undef значение в случае ошибки, поэтому достаточно проверить переменную перед использованием на равенство undef

vlanis » 25 фев 2004, 10:34

AiK писал(а):vlanis, максимум - это проверять синтаксис всех получившихся запросов самому :) .
Минимум - удалять(заменять) из пользовательского ввода все традиционно рекомендуемые к удалению символы и следить за тем, чтобы тебе вместо чисел и дат строки не подсовывали. Т.е. проверять совпадение типов данных.
это что касается переменных. (кстати о традиционно рекомендуемых можно чуть поподробнее :) . А вот обращение к базе (connect) там не надо проверять наличие подключения?

Вернуться к началу