02.04.2009, 05:42 | #1 |
Мастер
Регистрация: 03.07.2007
Сообщений: 959
Вес репутации: 274
|
Защита от подстановки переменных в URL c помощью .htaccess
В определенных кругах имеет место быть паранойя насчет того, что "продажные ссылки" вычисляются или могут вычисляться методом подстановки "левых переменных" в URL и сравнением результата.
Не берусь судить, насколько такая паранойя имеет право на существование, а также ленюсь искать, предлагалось ли уже что-либо в качестве "рецепта", но предлагаю такие строки для написания их в .htaccess: RewriteCond %{THE_REQUEST} ^.*\?.*$ RewriteRule ^(.*)$ /404.html [L] Комментарий: данный код подходит для сайтов, напропалую использующих .htaccess в целях придания URL-ам сайта "статического" вида (то есть не содержащих в URL строк запроса после символа "?") В случае обнаружения QUERY_STRING (т.е. при наличии символа "?" в URL) сервер отдает сообщение об ошибке 404, записанное в файле /404.html, то есть к этому результату приводит любая попытка подставить к статическому URL какую-либо левую переменную, а также просто подстановка символа "?" к URL Если URL-ы сайта имеют "динамический" вид, т.е. могут включать в себя строку запроса с некоторыми разрешенными переменными, то конечно можно вышеприведенные строки .htaccess модифицировать таким образом, чтобы к ошибке 404 приводили только URL-ы неразрешенного на сервере вида - в нашем случае URL-ы с левыми переменными, подставленными к URL справа. Думаю, особо сложного в этом ничего нет. Благодарю за внимание |
02.04.2009, 11:18 | #2 |
Пафосный резидент
Регистрация: 14.07.2008
Адрес: Pegia
Сообщений: 2,180
Вес репутации: 316
|
Нюанс тут в том, что никакой 404 ошибки сервер тут не отдаст, он отдаст код ответа 200, т.е., что все ОК! То, что вы назвали файл 404.html вовсе не означает, что сервер отдаст название этого файла в качестве кода ответа.
Бо имя файла и код ответа -- вещи разные. Это во-первых. Во-вторых, при заходе по вполне валидному адресу, что-то вроде _http://сайт.ru/index.php?option=blabla, ваша конструкия оправит посетителя на страничку 404. |
02.04.2009, 11:37 | #3 |
Мастер
Регистрация: 03.07.2007
Сообщений: 959
Вес репутации: 274
|
Дык именно это и требуется, если Вы дали себе труд прочитать и понять написанное.
Если, в свою очередь, я правильно понял Вас, то Вы не поняли, из-за чего сыр бор. А сыр-бор из-за того, что некоторые считают, что подстановка option=blablabla, например, гуглем, помогает гуглю вычислить т.н. "продажные ссылки", ибо по адресу с подставленным option=blablabla, если не будет принято специальных мер, окажется прежний контент страницы, но исчезнут "продажные" ссылки. Останется только сравнить содержимое возвращенной страницы с option=blablabla и без оного, и отправить сайт в бан. Так вот, чтобы дать Гуглю по шаловливым рукам, и педлагается такая запись в .htaccess. В этом случае при подстановке гуглем или вообще кем попало всяких там левых option=blablabla будет просто возвращаться 404. То есть гуглю будет сказано сервером "но пасаран!" Последний раз редактировалось Константин Белокуров; 02.04.2009 в 11:47. |
02.04.2009, 11:41 | #4 |
Специалист
Регистрация: 08.07.2008
Сообщений: 429
Вес репутации: 214
|
Думаю надо вместо 404.html адресовать на 404.php (.pl, ...) который уже будет выдавать соответствующий 404 http заголовок.
__________________
Размещайте ссылки навсегда в контексте или текстовых блоках. Хороший хостинг 1Гб - 60р./мес. |
02.04.2009, 11:45 | #5 |
Мастер
Регистрация: 03.07.2007
Сообщений: 959
Вес репутации: 274
|
|
02.04.2009, 12:25 | #7 | |
Мастер
Регистрация: 03.07.2007
Сообщений: 959
Вес репутации: 274
|
Цитата:
Хочется "официальный" код 404 выдать - ну ради бога! Доработайте соответствующим образом код в .htaccess и выдавайте на здоровье! Добавлено через 6 минут Хотя лично я не очень верю в то, что ПС вычисляет "продажные" ссылки путем подстановок в URL-ы. Но тем не менее подстраховаться можно, опять же поупражняться с .htaccess не вредно... Добавлено через 10 минут Поправочка. Ну, то есть в данном случае возвращаться будет содержимое файла 404.html с кодом 200, что в общем-то для поставленной задачи вполне годится. Последний раз редактировалось Константин Белокуров; 02.04.2009 в 12:25. Причина: Добавлено сообщение |
|
30.05.2009, 14:33 | #8 |
Специалист
Регистрация: 20.03.2009
Адрес: Самара
Сообщений: 131
Вес репутации: 194
|
если и идет проверка на сапоссылки, то там идет проверка на контент + ссылки и контент без ссылок, а у вас будет совершенно другая страница. В принципе итог одинаковый, что 200 что 404. Пример: index.php и index.php?name=name - это 2 разные страницы, первая с контекстом, вторая ведет на 404.html
|
30.05.2009, 16:31 | #9 |
Эксперт
Регистрация: 23.11.2007
Адрес: Туда ведут благие намерения...
Сообщений: 1,280
Вес репутации: 330
|
В 404.php нужно дописать:
Код:
header("HTTP/1.0 404 Not Found");header("Status: 404 Not Found");
__________________
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Защита от копирования с помощью шифрования страниц сайта | sunplant | Вопросы от новичков | 26 | 28.12.2008 00:39 |
поднять пр с помощью перелинковки | Nazar | Вопросы от новичков | 3 | 18.11.2008 20:47 |
Права доступа с помощью .htaccess | jokero | Разработка и сопровождение сайтов | 6 | 22.09.2008 19:56 |
Пополнение счета с помощью ROBOXchange и WMR | Kodhi | Вопросы по работе системы | 4 | 15.09.2008 15:01 |
Уменьшение ВС с помощью rel=nofollow | rudomilov | Вопросы по работе системы | 15 | 17.01.2008 00:22 |
Часовой пояс GMT +3, время: 02:25.