Обход проверки данных

Chatof

Guest
Обход проверки данных

У меня такой вопрос. Значит стоит у меня такая провекра на переменную, что бы она существовала и не была пустой
PHP:
if(!isset($nik)||$nik=="")
{
echo "Неверно";
}
else
{
//обработка
}
Как один чувак умудрился зарегить пустую переменную!-я не представляю как он это сделал, но факт господа! Ведь никак чрез ету проверку нельзя пустую переменную пропустить!
Вопрос первый: Как это могло произойти.
Вопрос второй:Проверка в моём коде не может пропустить пустую переменную?
 

Tor

Новичок
давай ты ответишь на вопрос:
как ты узнал, что "один чувак умудрился зарегить пустую переменную"?
 

gfd

Guest
дай линк, я попробую
Если получиться - расскажу
 

Chatof

Guest
Tor, посмотрел в базе данных, в которой содержится инфа о зарегенных юзерах.
gfd пробуй
http://kukry-kish.h14.ru/index.php?razdel=club&mode=register
 

Tor

Новичок
следующий наводящий вопрос:

как переменная попадает в базу?
 

Chatof

Guest
Tor-пишу её в файл примерно так:

fwrite($file,$nik);

Ну тама ещё другие переменные пишуться, но на них такая же проверка стосит.
 

Tor

Новичок
т.е. код выглядит так?

PHP:
if(!isset($nik)||$nik=="")
{
echo "Неверно";
}
else
{
//обработка
}

fwrite($file,$nik);
 

Frol

Новичок
пробел, знак табуляции, знак перевода строки -- это тоже считается "пустой строкой"?
 

Chatof

Guest
Tor-перед провекрой я чищу переменную $nik вот такой функцией:
PHP:
function clean_bad($dano)
{
global $dano;
$dano=eregi_replace("<","",$dano);
$dano=eregi_replace(">","",$dano);
$dano=eregi_replace("&lt","",$dano);
$dano=eregi_replace("&gt","",$dano);
$dano=eregi_replace("\n","<br>",$dano);
$dano=eregi_replace("\t","",$dano);
$dano=eregi_replace("$","",$dano);
$dano=eregi_replace("^","",$dano);
$dano=trim($dano);
return $dano;
}
$nik=clean_bad($dano=$nik);
f(!isset($nik)||$nik=="") 
{ 
echo "Неверно"; 
} 
else 
{ 
$file=fopen("baza.txt","a");
fwrite($file,$nik);
fclose($file);
}
вот так вота примерно и выглядит код.
 

gfd

Guest
?
http://kukry-kish.h14.ru/index.php?razdel=club&mode=register

зашел - не понял, что пробовать ни формы регистрации, ничего (кроме фона и баннера) не увидел.

В любом случае: не $nik=="", а !empty($nik) или $nik===""

"" - это пустая строка(а не переменная), это можно обойти в зависимости от того , что ты дальше делаешь с $nik (есть ли приведение, превращение типов(оно может быть неявным) и т д)
 

Chatof

Guest
То есть елси поставить в условие ещё !empty($nik) то не пройдёт пустая строка?
 

Chatof

Guest
gfd хост глючный, поэтому ни хрена не грузицца.

-~{}~ 28.03.05 14:35:

Автор оригинала: Tor
код - ужас
А ты не видишь чё под ником написано? Новичок там написано...
 

gfd

Guest
1 вместо, а не "еще и"
2 замены, делай одним рег выр (а лучше без них обойтись - это у тебя из пушки по воробьям)
3 вычищать поболе придеться, если уж на то пошло
4 кроме баннера так ничего и не увидел(FFox, MyIE2)
5 читай FAQ ибо Tor прав
для начала :)
 

Chatof

Guest
gfd у меня тока через оперу получаеться отобразить его...
 

Frol

Новичок
Chatof
иди ссылку читать.
а потом переписывать свою функцию.

и проверку легче делать не вырезанием запрещенного, а вырезанием всего, что не разрешено.
 
Сверху