Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » DEL

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10

Открыть новую тему     Написать ответ в эту тему

Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DEL

Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 16:08 13-10-2003 | Исправлено: Terabyte, 21:16 31-08-2017
Advanced_Guest



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Terabyte
Я бы не назвал это багами, а просто возможные уязвимости.
 
Addslashes так же может исправить это:
 

$date="  те'ст       ";
echo "1: <input type=text value='$date'><br>";
$date=addslashes($date);
echo "2: <input type=text value='$date'>";

вывеет:  
[q]
1 : [поле с текстом те]
2 : [поле с текстом те'ст]
 
про базы данных тоже самое...
 
а насчёт инклуда - надо просто проверять что передаёться.
например:
 
 
Function ValidDir($dir){
return !ereg('[^a-zA-Z0-9_/]',$dir); // Только английские буквы и цифры и знаки: _ /
}

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

Код:
switch $_GET['act']{
case '1':  
include '1.php';
break
case '2':  
include '2.php';
break
deffult:  
include "def.php";
break
}
 


----------
The Abyss - UO, LA2, Ботва, BSFG

Всего записей: 2446 | Зарегистр. 14-04-2002 | Отправлено: 16:35 13-10-2003
Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DEL

Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 15:03 18-10-2003 | Исправлено: Terabyte, 21:16 31-08-2017
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Terabyte

Цитата:
А есть такая фукция которая обунляет значение переменной.  

unset($file, $somevar, $another, $olala, $ruboard, $cheburashka);


----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 15:27 18-10-2003
Advanced_Guest



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Terabyte
насчёт include "$file"
 
 
вопрос  откуда берётсься $file.
 
Если мы 100% уверенны что там только нами разрешённые значения, то всё в порядке.
 
Но если есть хоть какая то вероятность что хакер поставит туда свои данные - есть уязвимость.
 
 
Например тот же свитч.
 

Код:
switch ($file){
case "file.php":
       include $file;
break;
default:
      include "error.php";
}

Уязвимости нету, потому что мы точно уверенны что мы инклудим.  Если неправильные данные - инклудим своё.
 

Цитата:
А вот еще вопрос. На многих серверах у меня перестали передаваться данные через параметры скрипта, без создания такого массива $case=$_GET['case']; Причем на накоторых все и без него пашет. Я так понимаю это было сделано толкьо в более новых версиях ПХП для устранения инклуд-бага? Или я что то не так понимаю...?

 
Это меняеться директивой register_globals.
 
В новых версиях она off,  
 
В принципе исправляет много уязвииостей.
 
например раньше можно было через GET передавать то что должно было идти в POST/COOKIE.
сейчас это сложнее.
 
 
я использую такую запись чтобы проще было использовать переменные в скрипте:  
 
$mode=isset($_GET['mode']) ? addslashes($_GET['mode']) : '';
 
если $_GET['mode'] не указанно, то она будет равна "" , то есть пусто.
 
если указанно, то все \ замениться на \\ (addslashes)


----------
The Abyss - UO, LA2, Ботва, BSFG

Всего записей: 2446 | Зарегистр. 14-04-2002 | Отправлено: 15:29 18-10-2003
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Advanced_Guest

Цитата:
$mode=isset($_GET['mode']) ? addslashes($_GET['mode']) : '';  
 
если $_GET['mode'] не указанно, то она будет равна "" , то есть пусто.  
 
если указанно, то все \ замениться на \\ (addslashes)  

а помоему лучше сделать:

Цитата:
$mode=isset($_GET['mode']) ? addslashes($_GET['mode']) : NULL;  

http://www.php.net/manual/ru/language.types.null.php
а то так как ты написал, потом где не спросишь isset($mode), он тебе всегда будет кричать TRUE, даже если изначально его небыло


----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 15:41 18-10-2003
Advanced_Guest



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xntx
Можно и так, просто дальше в скрипте не идёт проверка про isset, только про ""
 
(меньше байтов писать )

----------
The Abyss - UO, LA2, Ботва, BSFG

Всего записей: 2446 | Зарегистр. 14-04-2002 | Отправлено: 17:47 18-10-2003
Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Какая понял код в начале файла:
$mode=isset($_GET['mode']) ? addslashes($_GET['mode']) : NULL;
спасает от инклуд бага для переменных не определенных в $case=$_GET['case']; на серверах с ХПХ, который не требует опредления перменной  в таком массиве для передачи из браузера?
 
 
А еще мне так и не ответили на вопрос выше:

Цитата:
На многих серверах у меня перестали передаваться данные через параметры скрипта, без создания такого массива $case=$_GET['case']; Причем на накоторых все и без него пашет. Я так понимаю это было сделано толкьо в более новых версиях ПХП для устранения инклуд-бага? Или я что то не так понимаю...?


Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 12:35 25-10-2003
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Я так понимаю это было сделано толкьо в более новых версиях ПХП для устранения инклуд-бага?
да, но это не инклуд баг. это фича.

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 12:43 25-10-2003
Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DEL

Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 13:00 25-10-2003 | Исправлено: Terabyte, 21:16 31-08-2017
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
register_globals boolean  
Tells whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables. For example; if register_globals = on, the url http://www.example.com/test.php?id=3 will produce $id. Or, $DOCUMENT_ROOT from $_SERVER['DOCUMENT_ROOT']. You may want to turn this off if you don't want to clutter your scripts' global scope with user data. As of PHP » 4.2.0, this directive defaults to off. It's preferred to go through PHP Predefined Variables instead, such as the superglobals: $_ENV, $_GET, $_POST, $_COOKIE, and $_SERVER. Please read the security chapter on Using register_globals for related information.  

 

Цитата:
Не понял, что за фича?  

этот register_globals, это никакой не баг. где баг то?

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 13:10 25-10-2003
Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DEL

Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 21:57 28-10-2003 | Исправлено: Terabyte, 21:17 31-08-2017
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Terabyte
главное не передавать данные прямо в запрос, тоесть не делать чтото типа:
.....WHERE id = $_GET['id']....
это вобще наверное единственная и самая распространенная ошибка.
везде юзай addslashes();

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 23:24 28-10-2003
Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DEL

Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 07:36 29-10-2003 | Исправлено: Terabyte, 21:17 31-08-2017
Vaulter

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
addslashes(); извините, г*вно полное......для защиты...
его используют только когда нужно чистый хтмл в БД загнать...
а ВСЕГДА И ВЕЗДЕ юзают:
 htmlspecialchars($str,ENT_QUOTES);

Всего записей: 9 | Зарегистр. 29-10-2003 | Отправлено: 15:19 29-10-2003
Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DEL

Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 21:30 29-10-2003 | Исправлено: Terabyte, 21:17 31-08-2017
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Vaulter
слышь, ты пойди успокойся, чайку попей.
наверное не знаешь что в БД(если это чтото типа My/MSSQL) хтмл можно сувать незаслешивая
а с
Цитата:
htmlspecialchars($str,ENT_QUOTES);

ты ничего особенного не добьешься, даже напортишь все. т.к. будешь делать запрос по русскому слову, а оно превратится в чтото типа [q][/q]
 
Terabyte
можно и так, а можно например:

Код:
$go = (!is_numeric($go)) ? 'mydie' : $go;
if (
$go == 'mydie') die('Странный какой-то id получается... Сохраню ка я ваш IP на всякий случай');


----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 22:15 29-10-2003 | Исправлено: xntx, 22:17 29-10-2003
Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DEL

Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 06:55 30-10-2003 | Исправлено: Terabyte, 21:18 31-08-2017
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Terabyte

Цитата:
не мог бы пояснить =)

аналог if... else - просто запись другая.. покороче.
http://www.php.net/manual/en/control-structures.alternative-syntax.php


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 06:58 30-10-2003
Vaulter

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xntx

Цитата:
слышь, ты пойди успокойся, чайку попей.

спасибо за заботу, но я вообщето спокоен.

Цитата:
наверное не знаешь что в БД(если это чтото типа My/MSSQL) хтмл можно сувать незаслешивая  
 

да что ты говоришь!...ну попробуй засунь строку <b>there's string</b> в БД......
 
эт ты наверное не в курсе, что на многих серваках стоит в PHP.INI такая строчка
magic_quotes=on
при которой просто во все POST переменные добавляется слэш по умолчанию.
 
 

Всего записей: 9 | Зарегистр. 29-10-2003 | Отправлено: 10:21 30-10-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10

Компьютерный форум Ru.Board » Интернет » Web-программирование » DEL


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru