[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сомнения в безопасности движка
php-down
Есть такой движок DLE

Смущает его безопасность. Посмотрите пожалуйста это нормально?


if (!isset ( $do )) $do = totranslit ( $_REQUEST['do'] ); else $do = totranslit ( $do );
if (!isset ( $subaction )) $subaction = $_REQUEST['subaction'];
if (isset ( $_REQUEST['doaction'] )) $doaction = $_REQUEST['doaction']; else $doaction = "";

где
function totranslit($var, $lower = true, $punkt = true) {

if ( is_array($var) ) return "";

$NpjLettersFrom = "абвгдезиклмнопрстуфцыі";
$NpjLettersTo = "abvgdeziklmnoprstufcyi";
$NpjBiLetters = array ("й" => "j", "ё" => "yo", "ж" => "zh", "х" => "x", "ч" => "ch", "ш" => "sh", "щ" => "shh", "э" => "ye", "ю" => "yu", "я" => "ya", "ъ" => "", "ь" => "", "ї" => "yi", "є" => "ye" );

$NpjCaps = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯЇЄІ";
$NpjSmall = "абвгдеёжзийклмнопрстуфхцчшщьъыэюяїєі";

$var = str_replace( ".php", "", $var );
$var = trim( strip_tags( $var ) );
$var = preg_replace( "/\s+/ms", "-", $var );
$var = strtr( $var, $NpjCaps, $NpjSmall );
$var = strtr( $var, $NpjLettersFrom, $NpjLettersTo );
$var = strtr( $var, $NpjBiLetters );

if ( $punkt ) $var = preg_replace( "/[^a-z0-9\_\-.]+/mi", "", $var );
else $var = preg_replace( "/[^a-z0-9\_\-]+/mi", "", $var );

$var = preg_replace( '#[\-]+#i', '-', $var );

if ( $lower ) $var = strtolower( $var );

if( strlen( $var ) > 200 ) {

$var = substr( $var, 0, 200 );

if( ($temp_max = strrpos( $var, '-' )) ) $var = substr( $var, 0, $temp_max );

}

return $var;
}




Спустя 8 минут, 59 секунд (1.03.2012 - 12:54) Visman написал(а):
totranslit же используют для обработки имени принимаемого на сервер файла?

Спустя 11 минут, 29 секунд (1.03.2012 - 13:06) Игорь_Vasinsky написал(а):
и как по одной функнции дял транслита можно судить о безопасности движка?


Спустя 10 минут, 30 секунд (1.03.2012 - 13:16) php-down написал(а):
Причем как видно этой функцией обрабатывается только переменная $do. А через остальные заходи кто желает?

Спустя 1 час, 8 минут, 42 секунды (1.03.2012 - 14:25) jetistyum написал(а):
что вообще в твоем понимании - заходи кто желает?

Спустя 8 минут, 26 секунд (1.03.2012 - 14:33) Игорь_Vasinsky написал(а):
ну тыт мы не движок рассматриваем а одну функцию. или у тебя в ней сомнения только? а что такого опасного она может сделать?

Спустя 21 минута, 25 секунд (1.03.2012 - 14:55) alexbel2404 написал(а):
если бы была не безопасной, уже бы тысячи сайтов были хакнуты)

Спустя 24 минуты, 31 секунда (1.03.2012 - 15:19) Guest написал(а):
Ну не знаю. Может как нибудь их обработать надо? Типа
if (!isset ( $subaction )) $subaction = htmlspecialchars( strip_tags( $_REQUEST['subaction'] ), ENT_QUOTES );
if (isset ( $_REQUEST['doaction'] )) $doaction = htmlspecialchars( strip_tags( $_REQUEST['doaction'] ), ENT_QUOTES ); else $doaction = "";


А так больно открыта для xss атак. Или это уже фобии?

Спустя 17 минут, 11 секунд (1.03.2012 - 15:37) Visman написал(а):
htmlspecialchars используют при выводе информации, а не при вводе.

Спустя 2 минуты, 55 секунд (1.03.2012 - 15:39) Игорь_Vasinsky написал(а):
а что в $do? для чего?

Спустя 5 минут, 11 секунд (1.03.2012 - 15:45) alexbel2404 написал(а):
Цитата (Игорь_Vasinsky @ 1.03.2012 - 16:39)
а что в $do? для чего?

вызов модуля. ?do=feedback, ?do=sitemap и т.д.) вызов модулей описан через switch($do), так что ничего опасного нет))

Спустя 4 минуты, 8 секунд (1.03.2012 - 15:49) Visman написал(а):
Цитата (alexbel2404 @ 1.03.2012 - 20:45)
вызов модуля. ?do=feedback, ?do=sitemap и т.д.) вызов модулей описан через switch($do), так что ничего опасного нет))

Получается, защищают то, что защищать не надо biggrin.gif

Спустя 23 минуты, 1 секунда (1.03.2012 - 16:12) php-down написал(а):
Цитата
htmlspecialchars используют при выводе информации, а не при вводе.

А что используют для ввода?
mysql_real_escape_string()?

Спасибо сомнения развеяны.

Спустя 15 минут, 6 секунд (1.03.2012 - 16:27) Visman написал(а):
Цитата (php-down @ 1.03.2012 - 21:12)
mysql_real_escape_string()?

Это при записи в базу данных wink.gif

При вводе в каждом конкретном случае свое.
Например, если ты принимаешь название модуля, чтобы загрузить по нему конкретный файл (не как выше сказано через switch($do), а именно по имени $do.'.php'), то нужно проверять, чтобы во входящие переменной были только латинские буквы и цифры.
Если же входящую перемнную сравниваешь с чем-то и все, то ни каких проверок не надо.

В общих случаях при работе с кодировкой UTF-8 следует проверять, чтобы символы не выходили за пределы допустимых значений для UTF-8.

Спустя 1 час, 15 минут, 40 секунд (1.03.2012 - 17:43) inpost написал(а):
sql-inj - при запросах в БД. Их на странице нет.
xss-inj - при выводе информации на экран, функция тоже не выводит.
Так что об безопасности тут в этой функции говорить бесполезно.

Спустя 2 часа, 38 минут, 53 секунды (1.03.2012 - 20:21) jetistyum написал(а):
Типичный случай smile.gif человек о безопасности что-то слышал, а о программировании - нет smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.