.htaccess - запрет прямого обращения к скриптам
Добавлено: 07 окт 2010, 14:24
Если вы не хотите, чтобы к вашим скриптам обращались напрямую, то при помощи .htaccess можно сделать так, чтобы сервер принимал запросы только с вашего сайта и от VK.
Предположим, что домен вашего сайта - mysite.ru и все скрипты находятся в корневой папке сервера. Для того чтобы осуществить задуманное надо создать файл denied.htm (сюда мы будем перенаправлять невалидные запросы) и отредактировать .htaccess
denied.htm
.htaccess (первое приближение)
Надеюсь, это позволит вам немного понять, какие действия будет выполнять наш .htaccess, однако использовать его в таком виде я крайне не рекомендую. Для большей универсальности нам надо предусмотреть возможность обращения из поддоменов WWW. В этом случае .htaccess будет выглядеть следующим образом:
.htaccess (второе приближение)
Однако и это еще не все! Дело в том, что из flash приложений обращение к серверу идет с HTTP_REFERER равным примерно следующему:
http://cs1560.vkontakte.ru/u1/0215f402bd09.zip
Чтобы учесть и эту возможность, мы должны еще раз модифицировать наш .htaccess
.htaccess
Этот код защитит вас от посторонних запросов и позволит нормально функционировать приложению. Но есть и минусы - сами вы тоже не сможете обратиться напрямую к своим скриптам. А кроме этого механизмы кэширования на некоторых серверах и хостингах тоже могут стать небольшой проблемой. Поэтому, на мой взгляд, все же лучше будет проверять HTTP_REFERER непосредственно в самом скрипте.
Пользуйтесь на здоровье. Благодарности за топик приветствуются!
Предположим, что домен вашего сайта - mysite.ru и все скрипты находятся в корневой папке сервера. Для того чтобы осуществить задуманное надо создать файл denied.htm (сюда мы будем перенаправлять невалидные запросы) и отредактировать .htaccess
denied.htm
Код: Выделить всё
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><body>Access denied</body></html>
Код: Выделить всё
RewriteEngine onRewriteBase /RewriteCond %{HTTP_REFERER} !^http://mysite\.ru [NC]RewriteCond %{HTTP_REFERER} !^http://vk\.com [NC]RewriteCond %{HTTP_REFERER} !^http://vkontakte\.ru [NC]RewriteRule ^(.*)$ denied.htm
.htaccess (второе приближение)
Код: Выделить всё
RewriteEngine onRewriteBase /RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite\.ru [NC]RewriteCond %{HTTP_REFERER} !^http://(www\.)?vk\.com [NC]RewriteCond %{HTTP_REFERER} !^http://(www\.)?vkontakte\.ru [NC]RewriteRule ^(.*)$ denied.htm
http://cs1560.vkontakte.ru/u1/0215f402bd09.zip
Чтобы учесть и эту возможность, мы должны еще раз модифицировать наш .htaccess
.htaccess
Код: Выделить всё
RewriteEngine onRewriteBase /RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite\.ru [NC]RewriteCond %{HTTP_REFERER} !^http://(www\.)?(cs[0-9]+)?vk\.com [NC]RewriteCond %{HTTP_REFERER} !^http://(www\.)?(cs[0-9]+)?vkontakte\.ru [NC]RewriteRule ^(.*)$ denied.htm
Пользуйтесь на здоровье. Благодарности за топик приветствуются!