Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

felipe323

Proteger arquivos contra download

Recommended Posts

Olá bom dia a todos. Começo pedindo desculpas pela pergunta boba que irei fazer mas ainda não encontrei nenhum tópico que me ajude quanto a isto.

Eu tenho um site em html que eu fiz a partir de um modelo. Fiz tudo no bloco de notas... O problema é que quando eu upo para o servidor o meu site os arquivos ficam disponiveis para qualquer um fazer download ou acessar. 

 

Vou tentar exemplificar:

Meu site : www.meusiteaqui.com.br

 

Até ai tudo bem o usuário acessar meu site normalmente o problema é que se ele colocar 

www.meusiteaqui.com.br/css/

 

Ele consegue acessar todos meus arquivos css. Se fosse /images/ tbm acessa e por ai vai. Eu não quero que ngm tenha acesso as pastas. Apenas às páginas HTML.

 

Alguém pode me dar uma luz? Por favor :)

 

Boa páscoa a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

O correto é colocar um index.html em todas as pastas que você não quer o conteúdo listado.

você ainda pode incrementar um pouco e colocar um redirect nesse index.html pra que sempre que for acessado tal pasta, ele volte para a raiz do site.

 

Exemplo:

Se for em php:

Arquivo: index.php

<?php
header("Location: ./intranet");
?>

Se for em html:

Arquivo: index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="refresh" content="0;url=http://www.dominio.com.br/pagina.htm">
  </head>

</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

e se não quiser que imagem seja acessada diretanete pelo browser digitando www.seusiteaqui.com.br/imagem.jpg pode desabilitar usando um arquivo .htaccess bom pra bloquear hotlink tambem que é quando alguem embeda imagem do seu site no site deles roubando banda de dado do seu site aí a imagem só pode ser vista dentro da pagina onde ela tá inserida

Compartilhar este post


Link para o post
Compartilhar em outros sites

@marsolim

Pelo que percebi se tive a seguinte estrutura:

 

index.html

/images/image1.jpg

/images/image2.jpg

/images/image3.jpg

 

e qual digitar www.mysite.com e carregar a index.html, mas na url apenas aparece "www.mysite.com". Até aqui percebo!

Agora na index.html são carregadas imagens que estão na pasta images. Que o user pode aceder às mesmas via www.mysite.com/images/image1.jpg". Para bloquear isso basta colocar um .htaccess junto do index.html com as url (caminhos absolutos) que pretendo que o user não possa aceder?

Compartilhar este post


Link para o post
Compartilhar em outros sites

um arquivo htaccess que uso na raiz do servidor antes da pasta public_html

 

Options All -Indexes
RewriteEngine on
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
RewriteCond %{HTTP_REFERER} !^http://(.+.)?seusite.com.br/ [NC]
RewriteRule .*.(gif|jpg|jpeg|mp4|ogv|png|webm)$ /index.html [L]

 

a linha 1 faz não aparecer a estrutura de pasta ou seja vai sempre pra index

a linha 2 habilita o modo rewrite pra poder fazer alteração no modo de funcionamento do site

linhas 3 e 4 manda pra uma pagina própria pra avisar de um erro de 403 e 404 quando a página acessada não existir

a linha 5 faz voltar pro início do site quando alguém acessar um arquivo proibido dos listados na linha 6

essa linha 6 é onde tá a lista dos arquivos que só pode ser acessado dentro das páginas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, grande dica. Ainda não percebo bem como configurar o htaccess. Tenho que estudar sobre isso!

No caso de ambiente interno, uma intranet, o "public_html" é a pasta /var/www/. Nesta estrutura onde devo colocar o ficheiro .htaccess?

Compartilhar este post


Link para o post
Compartilhar em outros sites

pense na raiz do site. em localhost temos uma pasta pra cada site certo? geralmente essa pasta é a raiz do site. no meu caso costumo ter por exemplo a pasta myprojects e vamos supor que tenho três sites dentro dessa pasta

- myprojects
| + mercadim
| + lojinha
| + buteco

 

aí tenho um .htaccess dentro de cada uma dessas três pastas

- myprojects
| - mercadim
  | .htaccess
| - lojinha
  | .htaccess
| - buteco
  | .htaccess

ou se tu não trabalha fazendo sites que vai pra web ou seja é só projetos intranet pode deixar só um dentro da raiz geral /www/ mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compreendi!

 

Passarei a ter

 

/var/www/site1/

intex.html

.htaccess

 

/var/www/site2/

intex.html

.htaccess

 

Isso leva-me a outra questão. Numa intranet como faço para que consiga aceder a diferentes sites do mesmo servidor? Neste momento apenas tenho um. Por isso digito, 192.168.1.5 e vou lá ter!

 

Mas acaso pretenda ter a estrutura que falou, como devo configurar o apache (penso que passa pelo apache, certo), para que consiga aceder a diferentes sites!

Penso que passa pelo apache e terei que criar dominios, com um dns.

 

Nota: Ok, posso sempre aceder via "192.168.1.5/site1/" ou "192.168.1.5/site2/". Mas se quiser fazer algo mais profissional, o que devo estudar? Que rumo devo seguir?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem eu costumo usar localhost/myprojects/mercadim mesmo mas tem um truque que tu pode fazer pra mudar localhost pra um nome que tu queira. segue passos

 

vai em C:\Windows\System32\drivers\etc e abre o arquivo hosts, pra salvar edições tem que tá logado no windows como administrador e ir com o botão direito no arquivo, ir nas propriedades, aba segurança e dar direitos totais para o usuário logado. se não conseguir desse jeito pode tentar salvar um novo hosts sem extensão nenhuma na área de trabalho. aí renomeia o original pra hosts0 por exemplo e move o da área de trabalho para o local do original. o windows deve pedir confirmação pra renomear e tals mas se tiver numa conta de administrador não vai ter problema pra fazer isso

 

se o arquivo não tiver sido modificado vai ter um texto mais ou menos assim

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host
# localhost name resolution is handled within DNS itself.
#    127.0.0.1       localhost
#    ::1             localhost

 

vai no fim desse arquivo e na proxima linha digita o ip do localhost que geralmente é 127.0.0.1 ou pode ser que seja esse 192.168.1.5 do seu caso mesmo seguido do nome que quiser que fica no lugar de local host por exemplo

 

192.168.1.5 codercss

 

tem ter pelo menos um espaço entre o ip e o nome

aí tu pode acessar os sites colocando codercss no lugar do ip tipo codercss/site1

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por juliosonic
      Boa noite..
      Estou desenvolvendo um site de https://www.maithunatantra.com.br/ e estou com um duvida sobre o menu de navegação da versão mobile.
      O menu que tem o dropdown "Terapeutas" e "Terapias" quando clico em cima ele expande como deve ser, mas quando clico denovo para recolher os submenus
      nao acontece nada.. segue o trecho do codigo do menu..
      <div class="collapse navbar-collapse" id="navbarsExample09">             <ul class="navbar-nav ml-auto">               <li class="nav-item  active"><a class="nav-link" href="index.html">Home</a></li>               <li class="nav-item  active"><a class="nav-link" href="about-us.html">Quem Somos</a></li>               <li class="nav-item dropdown1">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapeutas</a>                     <ul class="dropdown-menu">                         <li><a class="dropdown-item" href="terapeuta-julio-cezar.html">Julio Cezar</a></li>                         <li><a class="dropdown-item" href="terapeuta-pamela-priscila.html">Pamela Priscila</a></li>                     </ul>                                    </li>               <li class="nav-item dropdown">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapias</a>                     <ul class="dropdown-menu" aria-labelledby="dropdown01">                         <li><a class="dropdown-item" href="o-que-e-reiki.html">O que é Reiki</a></li>                         <li><a class="dropdown-item" href="beneficios-reiki.html">Benefícios do Reiki</a></li>                         <li><a class="dropdown-item" href="principios-reiki.html">Princípios do Reiki</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Reiki em Animais</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Estudos Sobre Reiki</a></li>                         <li><a class="dropdown-item" href="terapia-massagem-tantrica.html">Terapia Tântrica</a></li>                     </ul>               </li>               <li class="nav-item  active"><a class="nav-link" href="blog.html">Blog</a></li>                <li class="nav-item"><a class="nav-link" href="contato.html">Contato</a></li>             </ul>         </div>  
      Massagem Tantrica em Curitiba
      Tantra Curitiba
      Massagem Tântrica
      Tantra
      Julio Darshan

      Obrigado
      Att
      Julio Cezar
       
       
       
    • Por joeythai
      Boa tarde pessoal,
       
      Eu criei um formulário em que tenho 3 interações: evento click, change e uma chamada ajax. No evento on change ("select#removal_table_from" )eu faço uma chamada ajax onde eu passo como parametro o id do item selecionado e construo uma tabela dinamica com o próprio javascript, após isto, tenho um input em que o usuario coloca um valor de percentual para que eu possa preencher em 3 colunas da tabela que foi criada dinamicamente: moto_atualizado, carro_atualizado e caminhao_atualizado, até aí tudo bem, o codigo está fazendo isso, porém, como a tabela é criada dinamicamente eu preciso de alguma forma enviar o arrayData para meu backend mas quando faço o calculo dentro do loop apos resposta do meu ajax, os valores desses 3 campos chegam como null, não sei se é possível fazer o que pretendo ou se é ainda não sei como faz
       
      <code>
           $(document).ready(function (event) {   let arrayData = []; let percentage; let removal_vehicle; let removal_motorcycle; let removal_tuck; let apply_removal = $('#apply_removal');   // apply_removal.on('click', function () { // percentage = $('#percentage').val();   // $('.table-body tr').each(function () {   // let veiculo = $(this).find('.veiculo').text(); // let moto = $(this).find('.moto').text(); // let caminhao = $(this).find('.caminhao').text();   // let removal_vehicle = parseFloat(veiculo) + (parseFloat(veiculo) * parseFloat(percentage)) / 100; // let removal_motorcycle = parseFloat(moto) + (parseFloat(moto) * parseFloat(percentage)) / 100; // let removal_tuck = parseFloat(caminhao) + (parseFloat(caminhao) * parseFloat(percentage)) / 100;   // arrayData.push({ // removal_vehicle, // removal_motorcycle, // removal_tuck // })   // $(this).find('.veiculo_atualizado').val(removal_vehicle.toFixed(2)); // $(this).find('.moto_atualizado').val(removal_motorcycle.toFixed(2)); // $(this).find('.caminhao_atualizado').val(removal_tuck.toFixed(2)); // }); // });   apply_removal.on('click', function () { percentage = $('#percentage').val();   $('.table-body tr').each(function () {   let veiculo = $(this).find('.veiculo').text(); let moto = $(this).find('.moto').text(); let caminhao = $(this).find('.caminhao').text();   removal_vehicle = parseFloat(veiculo) + (parseFloat(veiculo) * parseFloat(percentage)) / 100; removal_motorcycle = parseFloat(moto) + (parseFloat(moto) * parseFloat(percentage)) / 100; removal_tuck = parseFloat(caminhao) + (parseFloat(caminhao) * parseFloat(percentage)) / 100;   arrayData.push({ removal_vehicle, removal_motorcycle, removal_tuck })   $(this).find('.veiculo_atualizado').val(removal_vehicle.toFixed(2)); $(this).find('.moto_atualizado').val(removal_motorcycle.toFixed(2)); $(this).find('.caminhao_atualizado').val(removal_tuck.toFixed(2));     console.log('Removal Vehicle:', removal_vehicle); console.log('Removal Motorcycle:', removal_motorcycle); console.log('Removal Truck:', removal_tuck); }); });   $('select#removal_table_from').on('change', function (e) { let table_id = $(this).val(); let action = route('removal.removal-values.show', table_id);   $.ajax({ type: "GET", url: action, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },   success: function (data) { $('.table-body').empty();   for (let i = 0; i < data.length; i++) { let carro = parseFloat(data[i].CARRO); let moto = parseFloat(data[i].MOTO); let caminhao = parseFloat(data[i].CAMINHAO); let distancia = data[i].DISTANCIA; let origem = data[i].ORIGEM; let destino = data[i].DESTINO; let localidadeOrigem = data[i].LocalidadeOrigem_ID; let localidadeDestino = data[i].LocalidadeDestino_ID;   let newRow = '<tr class="removal-row">' + '<td class="align-middle">' + '<div class="row">' + '<div class="col-1">' + '<span class="font-weight-bold">Origem</span><br>' + '<span class="origem">' + origem + '</span>' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Destino</span><br>' + '<span class="destino">' + destino + '</span>' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">KM</span><br>' + '<span class="km">' + distancia + '</span>' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Veículo</span><br>' + '<span class="veiculo">' + carro + '</span>' + '</div>' + '<div class="col-2">' + '<span class="font-weight-bold">Veículo Atualizado</span><br>' + '<input type="text" class="veiculo_atualizado">' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Moto</span><br>' + '<span class="moto">' + moto + '</span>' + '</div>' + '<div class="col-2">' + '<span class="font-weight-bold">Moto Atualizado</span><br>' + '<input type="text" class="moto_atualizado">' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Caminhão</span><br>' + '<span class="caminhao">' + caminhao + '</span>' + '</div>' + '<div class="col-2">' + '<span class="font-weight-bold">Caminhão Atualizado</span><br>' + '<input type="text" class="caminhao_atualizado">' + '</div>' + '</div>' + '</div>' + '</td>' + '</tr>';   $('.table-body').append(newRow); //let row = $('.removal-row:last');   // Calcula o valor atualizado e define nos campos diretamente // let veiculo_atualizado = carro + (carro * percentage) / 100; // let moto_atualizado = moto + (moto * percentage) / 100; // let caminhao_atualizado = caminhao + (caminhao * percentage) / 100; // console.log('PORCENTS: ', percentage); //console.log('Veiculo Atualizado:', veiculo_atualizado, 'Moto Atualizado:', moto_atualizado, 'Caminhao Atualizado:', caminhao_atualizado);   // Define os valores diretamente nos campos da nova linha // row.find('.veiculo_atualizado').val(veiculo_atualizado.toFixed(2)); // row.find('.moto_atualizado').val(moto_atualizado.toFixed(2)); // row.find('.caminhao_atualizado').val(caminhao_atualizado.toFixed(2));   arrayData.push({ carro, moto, caminhao, distancia, origem, destino, localidadeOrigem, localidadeDestino, removal_vehicle, removal_motorcycle, removal_tuck }); }   $('#copy_data_table').val(JSON.stringify(arrayData)); }   }); });   //javascript para o formulario de cadastro // $(document).ready(function (event) { $('#uf').change(function () { let code_city = $(this).val(); let deposit = localStorage.getItem('selected_deposit_id'); let action = route('removal.removal-values.cities', code_city); $.ajax({ type: "POST", url: action, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, data: { code_city: code_city },   success: function (data) {   $('#city').empty(); $('#deposit').empty();   for (let i = 0; i < data.cities.length; i++) { $('#city').append('<option value="' + data.cities[i].NM + '">' + data.cities[i].NM + '<option>'); }   if (data.deposits.length > 0) { for (let i = 0; i < data.deposits.length; i++) { $('#deposit').append('<option value="' + data.deposits[i].NM + '">' + data.deposits[i].NM + '<option>'); } } else { // $('#deposit').prop('disabled', true); // $('#city').prop('disabled', false); }   $('#city').trigger('change'); } });   });   $('#deposit').on('change', function () { depositId = $(this).val(); localStorage.setItem('selected_deposit_id', depositId); });   $('#uf_destiny').change(function () { let code_city = $(this).val(); let depositDestiny = localStorage.getItem('selected_deposit_destiny_id'); let action = route('removal.removal-values.cities', code_city); $.ajax({ type: "POST", url: action, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, data: { code_city: code_city },   success: function (data) {   $('#city_destiny').empty(); $('#deposit_destiny').empty();   for (let i = 0; i < data.cities.length; i++) { $('#city_destiny').append('<option value="' + data.cities[i].NM + '">' + data.cities[i].NM + '</option>'); }   if (data.deposits.length > 0) { // $('#deposit_destiny').prop('disabled', false); //$('#city_destiny').empty(); // $('#city_destiny').prop('disabled', true); for (let i = 0; i < data.deposits.length; i++) { $('#deposit_destiny').append('<option value="' + data.deposits[i].NM + '">' + data.deposits[i].NM + '</option>'); } } else { // $('#deposit_destiny').prop('disabled', true); // $('#city_destiny').prop('disabled', false); }   $('#city_destiny').trigger('change'); } }); });   $('#deposit_destiny').on('change', function () { let depositDestinyId = $(this).val(); localStorage.setItem('selected_deposit_destiny_id', depositDestinyId); });   }); </code>
    • Por babylon
      Olá galera tudo bem?
      Deixa eu perguntar, estava mexendo no meu site e queria adicionar em html essa tabela porem esta dando erro pois fica assim:
       

      Porem gostaria que ficasse assim:

      Segue o código da tabela:
      <center><table border="0">
          <tr>
      <td bgcolor="#0092df" width="24%"><a href="/categorias?ename=smartphones"><span style="font-size: 20px; color: #ffffff;"><b> <font color="#0092df">..</font>Bicicleta<br> <font color="#0092df">..</font>Track Bikes<br> <font color="#0092df">..</font>Aro 29 TKS</b></a></span><br><br><font size="5"><center><span style="background-color: #A1CD44">DE:</span></font> <br><font size="5"><s>R$ 1.999,99</center></font></s> </td><td><p><a href="/categorias?ename=smartphones"><img src="/static/img/itembicicleta.jpg"><br><font size="5"><center><span style="background-color: #A1CD44">COM - 60%:</span></font> <br><font size="5">1.199,99</font></center></a></td>
             <td><font color="#ffffff">....</font></td>
              <td bgcolor="#0092df" width="24%"><a href="/categorias?ename=smartphones"><span style="font-size: 20px; color: #ffffff;"><b> <font color="#0092df">..</font>Monitor 24"<br> <font color="#0092df">..</font>Samsung<font color="#0092df">aa.aa</font><br> <font color="#0092df">..</font>1ms 144hz</b></a></span></center></td><td><p><a href="/categorias?ename=smartphones"><img src="/static/img/itemmonitor.jpg"></a></td>
          </tr>
          </table></center>
      O que estaria errado, pois não sei como colocar nessa tabela outro fundo de outra cor, veja que usei td bgcolor="#0092df" para o azul escuro mas não sei como usaria pro "#e4f1fb" para o fundo ficar de azul claro em baixo bem como não ficou correto em altura o "DE:" com o "COM - 60%:".
      Bom é isso, obg.


    • Por Alessandro Bodão
      Fala galerinha, 
       
      Tenho um container com um título (h1) no cabeçalho do meu site, esse container ocupa metade da tela (50vw), e eu gostaria que esse título ocupasse toda a largura desse container, independente do seu tamanho ou do tamanho do monitor, de forma com que a palavra tenha exactamente o mesmo tamanho do container (vou anexar uma foto de exemplo). Já tentei todos os valores pra essa h1, como % e vw... mas nada parece fazer sentido.
       
       

    • Por viniciusfroner
      Tenho um pequeno sistema de envio, estou utilizando o "PHPMailerAutoload". Após o usuário inserir as informações e clicar em enviar a mensagem é enviada com sucesso, o único problema é que apresentado ao usuário a seguinte mensagem:
      if ($enviado){ echo "E-mail enviado com sucesso!"; } else { echo "Não foi possível enviar o e-mail."; echo "<b>Informações do erro:</b> " . $msg->ErrorInfo; } Acabei procurando e não achei como posso remover a mensagem "Error:"
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.