Проблема с intval($_GET['id'])

Печать RSS
364

N

Голубые штаны
0
Ну например
if(preg_match('#[^a-z]#', $_GET['id'])) {ПНХ}
если уж на то пошло

2000 лет д.н.э.
0
Сколько помню учебников хороших и плохих в каждом жирными буквами всегда написано не используйте конструкции типа include $_GET['var'];
Без #11 поста это дыра)).
С

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

ツ ツ ツ
0
13. sanzstez, а и я не говорю что это плохая затея, я лиш намекаю на недостаточную фильтрацию
X

Пацак
0
$id = isset ( $_GET['id'] ) ? (int)  $_GET['id'] : NULL;
?
C

Пришелец
0
15. xass, ага,с этим кодом он обязательно прочитает index.dat xD
X

Пацак
0
coca-coca (Сегодня / 21:01)
15. xass, ага,с этим кодом он обязательно прочитает index.dat xD
D наверно не так понял что он хочет ...
C

Пришелец
0
  function IS_RLFI($value)
  {
     if($value != "" && !is_array($value))
	 {
	      $original = $value;
		  if(strpos($value,'.') !== FALSE)
		  {
		     if(strpos($value,"../") !== FALSE) { return TRUE; }		 
		     
			 if(strpos($value,"://") !== FALSE) { return TRUE; }
			 if(strpos($value,"http") !== FALSE  || 
			    strpos($value,'https') !== FALSE ||
				strpos($value,"ftp") !== FALSE   ||
				strpos($value,'www') !== FALSE) { return TRUE; }
				
			 if(file_exists($value)) { return TRUE; }
		  }
		  else
		  {
		     return FALSE;
		  }
	 }
	 return FALSE;
  }
 
 $id = !empty($_REQUEST['id']) && IS_RLFI($_REQUEST['id']) === TRUE ? $_REQUEST['id'] ? 'index';
 
фильтр от RLFI хорошо работает, часто пользуюсь им)
PS, придется модифицировать под ваши нужды конечно )
Изменил: coca-coca (13.12.2009 / 21:22)

2000 лет д.н.э.
0
Гг вот залили вам шелл в виде shell.gif
проку от него ни какого, а вот благодаря такой вот конструкции этот шелл становится действительно опасен если удастся его проинклудить.
До кучи можно и хитаччес проинклудить если он в папке есть и любой другой левый файл, тем самым вызвать ошибку. Вобщем не позволяйте пользователя вмешиваться в сценарий это ни чего хорошего не даст. Или хотя бы проверяйте как следует.
if($_GET['var']!='' AND preg_match('|^[a-z]+$|',$_GET['var']) AND file_exists('include/'.$_GET['var'].'.php')){
include $_GET['var'].'.php';
}
что то типа этого..
#18 всегда лучше не запрещать, а разрешать, всегда есть шанс упустить что либо в запрете.
C

Пришелец
0
#19, если всё разрешать - то дефейс обеспечен ))
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск