Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: if || or === 12строк||2строки :что выбрать?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
JSergRu
Отправлено: 07 Мая, 2012 - 11:55:39
Post Id



Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Апр. 2012  
Откуда: у тебя кАнфетка? ^^


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['module']))
  2. {    
  3.     $module=$_GET['module'];
  4.     $file="modules/".$module.".php";
  5.         if (file_exists($file))
  6.         {
  7.             include $file;
  8.         }else{ //обработка ошибки
  9.         }
  10. }else{
  11. include ("modules/Index.php");
  12. }

Вышенаписанный код сократил до двух строк
PHP:
PHP:
скопировать код в буфер обмена
  1. (@$module=$_GET['module']) or ($module="Index");
  2. (@include "modules/".$module.".php") or die("Error???!!!");

Вопрос: как это выглядит? Является ли это говнокодом? Что набрать в поисковике чтобы почитать о (/*выражение*/)or(/*выражение*/);? Есть ли другие комментарии и предложения?
 
 Top
vitaliy_mad
Отправлено: 07 Мая, 2012 - 12:03:34
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




Весь вопрос в читабельности... второй вариант менее нагляден... хотя вполне корректен...
 
 Top
Мелкий Супермодератор
Отправлено: 07 Мая, 2012 - 12:09:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Является. Не используйте @.

PHP:
скопировать код в буфер обмена
  1. $module=isset($_GET['module']) ? basename($_GET['module']) : 'Index';
  2. $file="modules/".$module.".php";
  3. if (file_exists($file))
  4.     {
  5.         include $file;
  6.     }else{ //обработка ошибки
  7. }


Обратите внимание на уязвимость вашего кода, закрытую с помощью basename.


-----
PostgreSQL DBA
 
 Top
JSergRu
Отправлено: 07 Мая, 2012 - 13:16:22
Post Id



Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Апр. 2012  
Откуда: у тебя кАнфетка? ^^


Помог: 0 раз(а)




Мелкий пишет:

Обратите внимание на уязвимость вашего кода, закрытую с помощью basename.

Вы хотите сказать что хакер найдет возможность залить в директорию modules свою директорию со своими скриптами?
PHP:
скопировать код в буфер обмена
  1. за подсказку
  2. $module=isset($_GET['module']) ? basename($_GET['module']) : 'Index';
  3. отдельное спасибо )


сколько сообщений надо набрать чтобы спасибки добавлять? Хм

(Отредактировано автором: 07 Мая, 2012 - 13:18:06)

 
 Top
Мелкий Супермодератор
Отправлено: 07 Мая, 2012 - 14:10:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




JSergRu пишет:
Вы хотите сказать что хакер найдет возможность залить в директорию modules свою директорию со своими скриптами?

Всё зависит от вас!
В случае отключённых магических кавычек и без патчей Suhosin будет возможно прочитать файл с любым именем, на что хватит прав. А ведь если там не будет <? - то содержимое файла просто выйдет в выходной поток.

А уж такая банальная вещь, как вызвать любой ваш php-скрипт - сама собой разумеется.
Например, зациклить ваш этот скрипт и положить сервер нагрузкой, которую вы сами и создаёте?


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB