Nginx

Como bloquear links diretos com Nginx

Como bloquear links diretos com Nginx
Nginx é um servidor da web leve, capaz de lidar com um grande número de solicitações em um determinado momento sem tornar o servidor ocupado. Ele contém recursos sofisticados, como processamento assíncrono, suporte a ipv6, cache loader, suporte a http / 2, hotlinking de blocos, pools de threads, SPDY e SSL e muitos mais. Entre eles, um dos recursos mais importantes para qualquer site em geral é o bloqueio de hotlinking. Hotlinking é uma prática maliciosa frequentemente feita por certos webmasters mesquinhos quando eles não podem arcar com o custo da largura de banda e, portanto, acabam pegando-a de outro lugar. Isso impede que os webmasters legítimos utilizem a largura de banda pela qual pagaram. Além disso, o recurso vinculado pode estar indisponível para os usuários que visitam o site original, quando a largura de banda alocada para o webmaster original se esgota e o proprietário do site não paga pela largura de banda excessivamente consumida. Em suma, para preservar a integridade, a disponibilidade de hotlinking do site deve ser interrompida, e este guia ensina como fazer isso com facilidade.

Preparação

No segmento de preparação, as instruções gerais para ambos os métodos referidos posteriores são anotadas. Obviamente, é importante ter um console para acessar o servidor por SSH e um editor de texto adequado como nano para abrir o arquivo de configuração Nginx. Assim que ambos forem adquiridos, use os seguintes comandos para abrir, salvar e aplicar as alterações. As etapas a seguir assumem que o usuário já acessou o servidor por SSH.

nano / etc / nginx / sites-available / default

Método 1: Método Geral

O método geral é muito fácil de implementar e entender, pois contém apenas um bloco de localização. Além disso, ele bloqueia solicitações para determinados formatos de arquivo apenas em vez de bloquear todas as solicitações de referenciadores inválidos para o servidor.

  1. Copie o seguinte snippet de código.
  2. Abra o arquivo padrão do nginx como visto na fase de “Preparação”.
  3. Cole o trecho de código copiado sob o primeiro bloco de localização encontrado no arquivo padrão. No nginx, a expressão regular que não diferencia maiúsculas de minúsculas (~ *) é sempre priorizada antes da barra (/) e, portanto, o seguinte trecho de código é executado antes do bloco de localização da barra.
  4. Salve e feche o arquivo padrão e siga 3, 4 etapas na fase de “Preparação” para fazer as alterações entrarem em vigor.

No exemplo a seguir, ele bloqueia solicitações para arquivos css, gif, ico, jpeg, js, png, woff, woff2, ttf, ttc, otf e eot. Existem 10 declarações condicionais no bloco de localização. A primeira declaração condicional permite que os recursos sejam visualizados diretamente por meio do navegador da web, 2WL e 3rd os blocos permitem que os recursos sejam visualizados através do site original (ambos os subdomínios sem www e www), o restante dos blocos, exceto a pesquisa?qe o último bloco permitem que os rastreadores do mecanismo de pesquisa acessem e indexem os recursos, o que é muito importante para indexar as imagens tanto no google images quanto no bing images. A pesquisa?q permite que o serviço de cache do google acesse e salve os recursos junto com a página, e assim a página pode ser acessada diretamente por meio do resultado da pesquisa do google quando o site está offline.

localização ~ * \.(css | gif | ico | jpeg | jpg | js | png | woff | woff2 | ttf | ttc | otf | eot) $
if ($ http_referer !~ "^ $")
definir $ rule_0 1 $ rule_0;

if ($ http_referer !~ "^ http: // nucuta.com /.* $ ")
definir $ rule_0 2 $ rule_0;

if ($ http_referer !~ "^ http: // nucuta.com $ ")
definir $ rule_0 3 $ rule_0;

if ($ http_referer !~ * "google.")
definir $ rule_0 4 $ rule_0;

if ($ http_referer !~ * "pesquisa?q = cache ")
definir $ rule_0 5 $ rule_0;

if ($ http_referer !~ * "msn.")
definir $ rule_0 6 $ rule_0;

if ($ http_referer !~ * "yahoo.")
definir $ rule_0 7 $ rule_0;

if ($ http_user_agent !~ * "googlebot")
definir $ rule_0 8 $ rule_0;

if ($ http_user_agent !~ * "msnbot")
definir $ rule_0 9 $ rule_0;

if ($ http_user_agent !~ * "slurp")
definir $ rule_0 10 $ rule_0;

if ($ rule_0 = "10987654321")
return 403;
pausa;

Método 2: Método Valid_Referers

Referências válidas são o método mais conveniente e amplamente conhecido para bloquear referências inválidas com facilidade. Ele contém apenas duas linhas em comparação com o método anterior e é muito flexível. No entanto, é um pouco difícil de digerir, pois envolve expressões regulares e um mecanismo diferente para bloquear solicitações de referenciadores inválidos.

  1. Copie o seguinte snippet de código para o meio e no início do bloco de localização principal.
  2. Substitua a lista de nomes de domínio pelos nomes de domínio permitidos, por exemplo google, bing ou seus próprios domínios, etc.
  3. Salve e feche o arquivo padrão e siga 3, 4 etapas na fase de “Preparação” para fazer as alterações entrarem em vigor.

valid_referers nenhum bloqueado server_names

*.linux.com linux.* www.linux.com / sobre /
~ \.linux \.;
 
if ($ invalid_referer)
return 403;

Ele tem principalmente dois blocos de código, valid_referers, e a expressão condicional if com a variável invalid_referer. Por padrão, este bloco de código é usado no meio e no início do bloco de localização antes da execução de qualquer outro código, mas também pode ser usado em qualquer outro lugar, como entre um bloco de código de localização com expressões regulares para detectar formatos de arquivo específicos para tornar o bloqueio relevante para os formatos de arquivo mencionados, como no método 1. Conforme explicado anteriormente, o método contém apenas dois blocos de código, o primeiro bloco de código contém 3 palavras-chave, o primeiro é "nenhum" quando o campo referer está ausente na solicitação HTTP, o segundo é "bloqueado" quando o campo referer é excluído por qualquer parte intermediária, como um proxy, firewall etc., a terceira palavra-chave é para especificar os nomes de domínio válidos.

Quando o nome de domínio começa com o símbolo “~”, ele é considerado uma expressão regular e, portanto, podem ser usados ​​padrões muito complexos, mas pode ser difícil de entender se as expressões regulares não forem bem conhecidas. Se nenhuma das condições for atendida na instrução valid_referers, a variável invalid_referer é definida como string vazia, caso contrário, é definida como 1, o que significa se a solicitação seguinte não contém nenhum campo referer ou se nginx identificou esse campo referer por um firewall ou proxy, ou se o campo referer for definido para os domínios especificados (lista de nomes de domínio válidos), a variável referer inválida é definida como string vazia e, portanto, sua condição se não for executada. No entanto, se a solicitação vier de um domínio não especificado na expressão valid_referers como um domínio válido, ela será bloqueada.

CONCLUSÃO

Certifique-se de considerar este conteúdo e evitar hotlinking em seus sites hospedados em Nginx.

Adicione gestos do mouse ao Windows 10 usando essas ferramentas gratuitas
Nos últimos anos, os computadores e sistemas operacionais evoluíram muito. Houve um tempo em que os usuários tinham que usar comandos para navegar pel...
Controle e gerencie o movimento do mouse entre vários monitores no Windows 10
Gerenciador de mouse com tela dupla permite que você controle e configure o movimento do mouse entre vários monitores, diminuindo seus movimentos pert...
WinMouse permite que você personalize e melhore o movimento do ponteiro do mouse no PC com Windows
Se você quiser melhorar as funções padrão do ponteiro do mouse, use um freeware WinMouse. Ele adiciona mais recursos para ajudá-lo a obter o máximo do...