|
26 / 19 / 5
Регистрация: 19.05.2009
Сообщений: 2,290
|
||||||
Правильно ли я делаю?12.03.2013, 20:58. Показов 3295. Ответов 31
Метки нет (Все метки)
Приветствую.
Я сейчас делаю один макет. Вот код. Подскажите, правильно ли я делаю, или для этого же имеется лучшее решение? И как это с точки зрения безопасности?
0
|
||||||
| 12.03.2013, 20:58 | |
|
Ответы с готовыми решениями:
31
Не работает mail(); все ли я делаю правильно? Правильно ли я реализовываю добавляемые пользователем поля в менеджер контактов. Код есть. Нужен совет, если не правильно делаю Правильно ли я делаю?? |
|
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
|
||
| 12.03.2013, 21:50 | ||
0
|
||
|
26 / 19 / 5
Регистрация: 19.05.2009
Сообщений: 2,290
|
|
| 12.03.2013, 21:52 [ТС] | |
|
и как мне нужно исправить код, что бы такой возможности не было?
0
|
|
|
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
|
|
| 12.03.2013, 22:00 | |
|
поменьше гетов.. у вас нормально, вы напрямую не инклюдите файлы... через код(индекс) невозможно впарить свой зловредный пхп код серверу..посмотрел повнимательней.. А условия проверять - как душе угодно, хотите свичем, хотите ифом..
0
|
|
| 12.03.2013, 22:20 | ||||||
|
в плане безопасности нормально все, а сам код можно немного упростить, сделав как-то так:
Но это если смотреть только на код. ну а вообще, в представлении определять $_GET['page'] -- не лучшее занятие. опять же, если захотите поменять заголовки ответа (ну да хоть все та же 404ая ошибка), нужно обязательно буферизировать вывод. в принципе, на производительность не влияет, если заранее известно, что шапку нужно вывести всегда и везде, когда управление передается этому файлу. на самом деле, иногда нужен json или xml ответ для какой-то страницы, тогда это будет неудобно. тогда бы не мешало все-таки определиться, какой файл нужен по центру (step1, step2, step3 ну или итд), для чего обработку $_GET вынести раньше, где-то в контроллере. ну это, на самом деле не всегда так уж и нужно-то. вот. а еще в вашем коде isset($page) явно лишний. isset должен быть для $_GET['page'] -- вот он может быть не установлен, и будет нотис, если это так. а после $page = $_GET['page'] -- isset($page) всегда будет true.
0
|
||||||
|
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
|
||||||
| 12.03.2013, 22:35 | ||||||
|
не проверял, но вроде должно работать
![]()
0
|
||||||
| 12.03.2013, 23:15 | |
|
fa2m, эх. лучшеб ты у меня взял весь код, а не часть
вот теперь есть уязвимость, т.к. нет преобразования в int параметра page. даже если такое не сработает, типа page=/../../../../etc/passwd%00 (количество "../" нужно, конечно, подобрать), то щас вспомню, как...
0
|
|
|
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
|
|
| 12.03.2013, 23:21 | |
|
Дети, хватит практиковать RFI и LFI. Автор, читай про remote file including.
0
|
|
| 12.03.2013, 23:41 | |
|
ага, экранирование нуль-байта обходится с помощью большого количества слешей (больше 4096 символов при чтении файла обрезаются, захардкодено), а несуществующая "папка" в середине пути роли не играет (таким образом обрезается префикс). короче, уязвимость прекрасно работает.
Не по теме:
0
|
|
|
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
|
|
| 13.03.2013, 02:06 | |
|
NEbO, о какой уязвимости Вы говорите? Приведите пример! Что Вы туда "всунете"? какая разница int-не int... Пример, пожалуйста!
0
|
|
|
19 / 17 / 6
Регистрация: 15.11.2011
Сообщений: 133
|
|
| 13.03.2013, 02:10 | |
|
Думаю лучше делать не get'ы, а посты.
0
|
|
|
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
|
||
| 13.03.2013, 02:14 | ||
|
0
|
||
| 13.03.2013, 12:39 | |||||||
|
fa2m, ну я ж написал: page=/../../../../etc/passwd%00
в инклуд подставится: include("page/../../../../etc/passwd\000.php"); ну а после нулевого байта должно обрезаться, получится инклуд 'page/../../../../etc/passwd'. Правда, это не всегда срабатывает. если gpc_magic_quotes=on или на уровне сервера защищается от нуль-байта, или просто не сработало, тогда вариант: page=/../../../../etc/passwd/////////////////////////<еще 4096 слешей или "./"> . Таким образом отрезается суффикс. Разумеется, относительный путь до /etc/passwd еще нужно вычислить, вначале количество "../" нужно подобрать. Добавлено через 6 минут а по поводу гет или пост -- без разницы, запрос подделывается одинаково хорошо, что гет что пост. http-запросы вроде как правильнее разделять по смыслу (REST принцип): запрашиваем страницу, значит нужен GET, отправляем смешанные данные -- POST. Отправляем файл (или некоторый ресурс) -- PUT. Отправляем часть ресурса -- PATCH. Удаляем ресурс -- DELETE. Ну и так далее. гугль щедрый на результаты по запросу "http methods", хотя в идеале, желательно заглянуть и в rfc (1945 -- хорошо запоминается и 2616, более актуальный)Добавлено через 1 минуту ну и нельзя забывать, что все запросы запросто можно послать вручную, и прислать хоть с помощью того же PUT-а можно что угодно. Добавлено через 4 минуты
0
|
|||||||
|
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
|
|
| 13.03.2013, 12:47 | |
|
от .php можно избавиться, но куда Вы денете steppage=/../../../../etc/passwd///////////////////////// в include 'stepВСЁ_ЧТО УГОДНО'; Как Ваша конструкция даст TRUE в file_exist?
0
|
|
| 13.03.2013, 13:25 | |
|
да елки палки. сами посмотрите. $path = '/../aaa.txt'. после конкатенации со 'step' получится: 'step/../aaa.txt'. даже если "каталога" step не существует, файл aaa.txt приинклудится
Добавлено через 16 секунд и file_exists точно также работает Добавлено через 9 минут а вообще, говорят, что эту уязвимость, с 4096 слешами в новых версиях подзакрыли. поэтому если будете повторять на своем сервере, ее может и не быть. точных версий я не нашел, можете погуглить на тему "Path Truncation attack", возможно, вам удастся найти их. НО! в любом случае, присутствует information disclosure, вы в ЛЮБОМ случае, хоть на самых новых серверах, по крайней мере проверить наличие/отсуствие php файла в любой директории (выдача 404ой ошибки или ее отсутсвие). ну а если на сервере еще и include_path установлен в какое-то интересное значение, то у вас появится еще куда больше возможностей. да блин, что я объясняю. три раза сказал, надеюсь, кому нужно, тот услышал. пс. и инклудить лучше по полному пути файла: меньше потенциальных проблем с безопасностью, ну и не нужно обходить include_path (тем более что в нем может и не быть каталога '.').
1
|
|
|
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
|
|
| 13.03.2013, 14:11 | |
|
В общем я Вас понял, Вы хотели сказать, что: при совпадении с ещё какими-то ситуациями данный скрипт может быть не безопасен (потенциально опасным).
Но сам по себе - он не опасен.
0
|
|
|
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
|
||||||
| 13.03.2013, 14:25 | ||||||
|
ну так если нам нужно лишь имя файла , а не путь , так берем только имя
0
|
||||||
| 13.03.2013, 14:28 | |||
|
Не по теме:
Добавлено через 1 минуту блин, ну нафига? если можно просто привести к инту, если там только цифры? а для
0
|
|||
|
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
|
||
| 13.03.2013, 14:40 | ||
|
0
|
||
| 13.03.2013, 15:29 | |||||||
|
и да. при некоторых обстоятельствах указанная уязвимость не является критической. ну что-то из разряда "ага, топлива у нас на посадку не хватит, но мы все рассчитали: спустим ракету на землю на веревочке".
я понимаю, что троллить -- это очень весело, но если честно,я не понимаю, зачем допускать намеренно ошибки в коде, под предлогом помощи. считайте, что вы добились своего, вы меня выбесили, честно. также, и вам рекомендую посмотреть классификацию WASC, там очень прикольно , во второй версии разделили на атаки и уязвимости. в вашем коде есть уязвимость, а уж каким боком она будет к конкретной атаке -- один черт знает. может там вообще эти несколько скриптов в одтельном jail-е, полностью защищенном работают? ну тогда да, атаковать проблематично, если не вскроются специфические для данной версии пхп баги. ну а если сам пхп запускается с правами какого-нибудь там непойми-кого, и имеет доступ опять же только к этой папке? тем более, атаковать еще сложнее, даже если найдете buffer overflow, и у вас есть полный доступ на чтение, запись и исполнение этой папки. хорошо это или нет? да замечательно просто, лучше не придумаешь. и правда, уязвимость не критическая. и eval($_GET['cmd']) в таком случае, тоже. я не хакер. хоть я при проводил пару xss-атак, несколько раз ломал сервера наглых и подлых людей, но я не знаю ни всех принципов, не всегда смогу "раскрутить" такую уязвимость. не знаю даже процент тех серверов, на котором атака на нее сейчас пройдет. я лишь не думаю, что это 1-2%, ибо на серверах предпочитают, как правило, более старые, "стабильные" версии, особенно это касается шаред-хостинга. я всего лишь знаю один принцип: чем меньше уязвимостей, тем лучше. я могу показать, как примерно организовать атаку на эту уязвимость, а дальше -- это уже дело хакера, как он будет атаковать. Знаю лишь, что в паблике на эту тему почти никто никогда ничего не освещает, и вы с такой уязвимостью будете защищены от 95% (скажем) хакеров. для сайта Васи Петечкина, или для сайта-визитки компании УстьУрюпинскСпичкиТорг все будет в шоколаде, если там по 20-30 человек в день планируется, да хрен бы с ним! Условий можно придумать миллионы. Но тут вроде как обучающий раздел, вроде человек спрашивает про уязвимости. Ладно, если бы ваш код был единственный, это было бы на вашей совести, все забыли и проехали. Но зачем путать, есть уязвимость или нет, если она есть? это атаки может не найтись, при некоторых условиях. Я уже привел несколько примеров, как ее можно провести. Добавлено через 2 минуты
Добавлено через 8 минут пс. ну да, с джейлом я погорячился немного, хватит и простого open_basedir
1
|
|||||||
| 13.03.2013, 15:29 | |
|
Помогаю со студенческими работами здесь
20
Правильно ли я делаю? Правильно ли я делаю Git правильно ли я делаю Всё ли я правильно делаю ? Что я делаю не правильно ?! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|