Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

&lt;BBB&gt;<br>

CCC

</body>

</html>

Выглядеть он будет так:

Как видите, текст корректно преобразован в HTML-документ.

Вы, наверное, уже обратили внимание на то, что описанный подход очень похож на подход предыдущего раздела. Действительно, по адресу /cgi-bin/para.cgi/action/1.para мы увидим почти то же самое. «Почти» потому, что в этом случае переменной REDIRECT_URL уже не будет. Если бы мы использовали вместо неё PATH_INFO, то скрипт вообще «не почувствовал» бы разницы, будь он вызван как /cgi-bin/para.cgi/action/1.para или как /action/1.para.

Но самое интересное – сходства этих двух подходов на этом не заканчиваются. Оказывается, что и при Action-подходе сервер не проверяет, существует ли файл на самом деле! При обращении к любому файлу с расширением .para (в директории /action), независимо от того, существует ли файл, вызывается скрипт /cgi-bin/para.cgi. Даже REDIRECT_STATUS сохраняет значение 200. То есть все замечания относительно безопасности остаются в силе.

А теперь вопрос «на засыпку»: как отреагирует сервер на запросы /action/dir/1.para, /action/dir.para/1.para, /action/dir.para/1.text?

Естественно, ни директории /action/dir, ни директории /action/dir.para не существует.

Правильный ответ таков: в первом случае возникнет ошибка 404. Её бы не возникло, если бы /action/dir существовала, даже в том случае, если сам файл /action/dir/1.para отсутствовал. Во втором и третьем случаях будет как ни в чем не бывало вызван скрипт /cgi-bin/para.cgi.

Теперь, я думаю, читатель догадывается, как можно решить задачу, обозначенную в последнем абзаце предыдущего раздела.

Например, мы можем создать директорию /color и разместить в ней .htaccess со следующей директивой:

Action text/html /cgi-bin/pi.cgi

Кстати, обратите внимание, в этом примере мы обошлись без директивы AddHandler, так как обработчик привязан к определённому MIME-типу.

Теперь мы можем запустить pi.cgi двумя способами.

Первый – создать в директории /color директории, соответствующие необходимым цветам, скажем gray и green. Теперь по адресу /color/green/1.html мы обнаружим систему «зелёных» документов.

Обратите внимание: если директория /color/cyan не существует, то запрос документа /color/cyan/1.html вызовет ошибку 404.

Второй способ (внимание! это может быть потенциальная дыра в системе безопасности) – обратиться по адресу /color/hole.html/cyan/1.html. При этом директория hole.html не должна существовать. Теперь наличие расширения .html у директории hole.html приведёт к запуску pi.cgi, а он будет рассматривать только последние две компоненты пути – cyan и 1.html. Таким образом всё сработает «как часы». Так можно получить документ любого цвета, если на сервере не выполняется никаких проверок (как это сделано в нашем беспечном pi.cgi).


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2016 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100