Смущает его безопасность. Посмотрите пожалуйста это нормально?
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 написал(а):
Ну не знаю. Может как нибудь их обработать надо? Типа
А так больно открыта для xss атак. Или это уже фобии?
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), так что ничего опасного нет)) |
Получается, защищают то, что защищать не надо
Спустя 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()? |
Это при записи в базу данных
При вводе в каждом конкретном случае свое.
Например, если ты принимаешь название модуля, чтобы загрузить по нему конкретный файл (не как выше сказано через switch($do), а именно по имени $do.'.php'), то нужно проверять, чтобы во входящие переменной были только латинские буквы и цифры.
Если же входящую перемнную сравниваешь с чем-то и все, то ни каких проверок не надо.
В общих случаях при работе с кодировкой UTF-8 следует проверять, чтобы символы не выходили за пределы допустимых значений для UTF-8.
Спустя 1 час, 15 минут, 40 секунд (1.03.2012 - 17:43) inpost написал(а):
sql-inj - при запросах в БД. Их на странице нет.
xss-inj - при выводе информации на экран, функция тоже не выводит.
Так что об безопасности тут в этой функции говорить бесполезно.
xss-inj - при выводе информации на экран, функция тоже не выводит.
Так что об безопасности тут в этой функции говорить бесполезно.
Спустя 2 часа, 38 минут, 53 секунды (1.03.2012 - 20:21) jetistyum написал(а):
Типичный случай человек о безопасности что-то слышал, а о программировании - нет