Jump to content
  • 0
Guest

Permissões de Pastas [Gravar SOMENTE por FTP. Por HTTP, só leitura]

Question

Guest

Olá pessoal. Problema bem simples, mas infelizmente não achei solução em pesquisas convencionais.

 

Quero que uma pasta, em meu servidor de HOSPEDAGEM WEB - (Hostgator - Linux), permita apenas gravação via Cliente FTP(Filezilla por exemplo). E proíba qualquer tipo de gravação/alteração de arquivos via HTTP(Uploads, por exemplo). Acredito que seja necessário apenas aplicar um certo código de permissão de arquivo, mas infelizmente eu não sei esse código.

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Uma alternativa é deixar a pasta com permissão 644 assim não vai conseguir subir arquivos via código.

Só se o script inserir permissão automaticamente.

 

Share this post


Link to post
Share on other sites
  • 0
Guest
Em 2017-5-20 at 12:43, magno barbosa disse:

Olá, basta você acessar a opção gerenciador de usuários no CPanel, e criar um novo usuário apenas com acesso FTP, na opção disco web marque apenas leitura.

 

Se não houver permissões HTTP, ninguém consegue acessar o site. O que eu precisava mesmo era o código que permite que internautas acessem o site, mas não consigam listar diretórios e também que nenhum script(nem mesmo os do próprio site) consiga "injetar arquivos" na raiz do site (apenas na pasta /imagens, será permitido).

A permissão 644, que o Leandro de Jesus sugeriu BLOQUEIA TODO O SITE, não abre nenhuma página.

A melhor que eu encontrei, para o servidor HOSTGATOR, foi a permissão 751 (Todos podem EXECUTAR, Somente o grupo e o Root podem LER, e Apenas o Root pode gravar.

Isso permitiu abrir o site NORMALMENTE, e IMPEDE que as pastas sejam LISTADAS. Mas ainda não testei se também impede que um script PHP do próprio site INSIRA arquivos dentro da raiz do site.

 

Estou tendo problemas de segurança. Não sei de que forma, mas ALGUÉM está conseguindo SOBREPOR meus arquivos e prejudicando minha imagem perante os meus clientes. Desconfio que sejam concorrentes.

Além de sobrepor o índice, eles colocam um arquivo chamado "d.php", que altera o conteúdo das imagens do site. Também colocam uma arquivo de nome "GOD.htm", entre outros.

 

Não sei como fazem isso (MySQL INJECTION ??? PHP INJECTION ??? Javascript ???). Mas fazem.

 

Por isso estou procurando uma maneira que o servidor rejeite qualquer gravação, inclusive do próprio site, EXCETO, é claro, na pasta FOTOS/IMAGENS que é  o único local onde meus clientes precisam SUBIR arquivos de seus produtos. Até porque, se os "malandros" colocarem lá scripts(php,htm,html), não servirão para nada.

 

Isso seria uma solução provisória até que eu consiga entender onde está a falha de segurança nos meus PHPs.

Share this post


Link to post
Share on other sites
  • 0

Olá, então a sua questão é mais complexa do que pensa, e nesse caso precisa matar o mau pela raiz, vamos lá:

 

1° Escaneie o site usando : https://sitecheck.sucuri.net/;

2° Remova os arquivos apontados pela aplicação;

3° Notifique os erros via chamado para o Host e implemente as correções sugeridas.

 

Abraço.

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By mikuzuhara
      Por favor, preciso de ajuda da comunidade Ruby. Sou recém chegado na linguagem Ruby e no framework Rails. Estou participando da Campus Code e não consigo progredir em um desafio proposto no treinamento. O repositório do projeto baixei em minha máquina virtual VMware com Ubuntu 18.04 e nele consta o projeto em Ruby on Rails e os testes para passar com rspec. Eis os arquivos sensíveis para concluir o projeto: 
       
      home_controller.rb:
      class HomeController < ApplicationController def page @recipes = Recipe.all end end page.html.erb:
      <% if recipes == [] %> <h1>CookBook</h1> <p>Bem-vindo ao maior livro de receitas online</p> <% else %> <% @recipes.each do |recipe| %> <h1><%= recipe.title %></h1> <li><%= recipe.recipe_type %></li> <li><%= recipe.cuisine %></li> <li><%= recipe.difficulty %></li> <li><%= recipe.cook_time %> minutos</li> <% end %> <% end %> recipe.rb:
      class Recipe < ApplicationRecord end routes.rb:
      Rails.application.routes.draw do root to: 'home#page' resources :recipe end  
      E esse é o arquivo de testes visitor_visit_homepage_spec.rb:
       
      require 'rails_helper' feature 'Visitor visit homepage' do scenario 'successfully' do visit root_path expect(page).to have_css('h1', text: 'CookBook') expect(page).to have_css('p', text: 'Bem-vindo ao maior livro de receitas'\ ' online') end scenario 'and view recipe' do #cria os dados necessários recipe = Recipe.create(title: 'Bolo de cenoura', recipe_type: 'Sobremesa', cuisine: 'Brasileira', difficulty: 'Médio', cook_time: 60) # simula a ação do usuário visit root_path # expectativas do usuário após a ação expect(page).to have_css('h1', text: recipe.title) expect(page).to have_css('li', text: recipe.recipe_type) expect(page).to have_css('li', text: recipe.cuisine) expect(page).to have_css('li', text: recipe.difficulty) expect(page).to have_css('li', text: "#{recipe.cook_time} minutos") end scenario 'and view recipes list' do #cria os dados necessários recipe = Recipe.create(title: 'Bolo de cenoura', recipe_type: 'Sobremesa', cuisine: 'Brasileira', difficulty: 'Médio', cook_time: 60) another_recipe = Recipe.create(title: 'Feijoada', recipe_type: 'Prato Principal', cuisine: 'Brasileira', difficulty: 'Difícil', cook_time: 90) # simula a ação do usuário visit root_path # expectativas do usuário após a ação expect(page).to have_css('h1', text: recipe.title) expect(page).to have_css('li', text: recipe.recipe_type) expect(page).to have_css('li', text: recipe.cuisine) expect(page).to have_css('li', text: recipe.difficulty) expect(page).to have_css('li', text: "#{recipe.cook_time} minutos") expect(page).to have_css('h1', text: another_recipe.title) expect(page).to have_css('li', text: another_recipe.recipe_type) expect(page).to have_css('li', text: another_recipe.cuisine) expect(page).to have_css('li', text: another_recipe.difficulty) expect(page).to have_css('li', text: "#{another_recipe.cook_time} minutos") end end Passo o comando rspec na pasta do projeto:
       
      :~/workspace/cookbook_parte2$ rspec Visitor visit homepage successfully (FAILED - 1) and view recipe (FAILED - 2) and view recipes list (FAILED - 3) Recipe add some examples to (or delete) /home/massa-90/workspace/cookbook_parte2/spec/models/recipe_spec.rb (PENDING: Not yet implemented) Pending: (Failures listed here are expected and do not affect your suite's status) 1) Recipe add some examples to (or delete) /home/massa-90/workspace/cookbook_parte2/spec/models/recipe_spec.rb # Not yet implemented # ./spec/models/recipe_spec.rb:4 Failures: 1) Visitor visit homepage successfully Failure/Error: <% if recipes == [] %> ActionView::Template::Error: undefined local variable or method `recipes' for #<#<Class:0x0000564c2a9f8630>:0x0000564c2a9f30b8> Did you mean? @recipes # ./app/views/home/page.html.erb:1:in `_app_views_home_page_html_erb___526898541735595527_47442566303380' # ./spec/features/visitor_visit_homepage_spec.rb:5:in `block (2 levels) in <top (required)>' # ------------------ # --- Caused by: --- # NameError: # undefined local variable or method `recipes' for #<#<Class:0x0000564c2a9f8630>:0x0000564c2a9f30b8> # Did you mean? @recipes # ./app/views/home/page.html.erb:1:in `_app_views_home_page_html_erb___526898541735595527_47442566303380' 2) Visitor visit homepage and view recipe Failure/Error: <% if recipes == [] %> ActionView::Template::Error: undefined local variable or method `recipes' for #<#<Class:0x0000564c2a9f8630>:0x0000564c2a68c0c8> Did you mean? @recipes # ./app/views/home/page.html.erb:1:in `_app_views_home_page_html_erb___526898541735595527_47442566303380' # ./spec/features/visitor_visit_homepage_spec.rb:19:in `block (2 levels) in <top (required)>' # ------------------ # --- Caused by: --- # NameError: # undefined local variable or method `recipes' for #<#<Class:0x0000564c2a9f8630>:0x0000564c2a68c0c8> # Did you mean? @recipes # ./app/views/home/page.html.erb:1:in `_app_views_home_page_html_erb___526898541735595527_47442566303380' 3) Visitor visit homepage and view recipes list Failure/Error: <% if recipes == [] %> ActionView::Template::Error: undefined local variable or method `recipes' for #<#<Class:0x0000564c2a9f8630>:0x0000564c2a4b2cc0> Did you mean? @recipes # ./app/views/home/page.html.erb:1:in `_app_views_home_page_html_erb___526898541735595527_47442566303380' # ./spec/features/visitor_visit_homepage_spec.rb:41:in `block (2 levels) in <top (required)>' # ------------------ # --- Caused by: --- # NameError: # undefined local variable or method `recipes' for #<#<Class:0x0000564c2a9f8630>:0x0000564c2a4b2cc0> # Did you mean? @recipes # ./app/views/home/page.html.erb:1:in `_app_views_home_page_html_erb___526898541735595527_47442566303380' Finished in 0.34634 seconds (files took 2.17 seconds to load) 4 examples, 3 failures, 1 pending Failed examples: rspec ./spec/features/visitor_visit_homepage_spec.rb:4 # Visitor visit homepage successfully rspec ./spec/features/visitor_visit_homepage_spec.rb:12 # Visitor visit homepage and view recipe rspec ./spec/features/visitor_visit_homepage_spec.rb:29 # Visitor visit homepage and view recipes list E para criar a model recipe na linha do terminal e executar a migration criada em db/migrations:
       
      $ rails generate model recipe title:string recipe_type:string cuisine:string difficulty:string cook_time:string invoke active_record create db/migrate/20191016221038_create_recipes.rb create app/models/recipe.rb invoke rspec create spec/models/recipe_spec.rb $ rspec Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=test $ cd bin $ rails db:migrate RAILS_ENV=test== 20191016221038 CreateRecipes: migrating ==================================== -- create_table(:recipes) -> 0.0029s == 20191016221038 CreateRecipes: migrated (0.0035s) =========================== O que pode ser alterado nos códigos do projeto que eu não saiba?
       
      Aguardo sua resposta.
       
      Obrigado,
       
      Marcelino
       
    • By pilgrim
      Amigos, sou bem noob na área ainda. Já consigo configurar um servidor, fazer um site em WP, colocar ele online etc. Fui fazer uns testes de transferência de hospedagem usando o Duplicator mas ao acessar via sftp pelo Filezilla não acho os arquivos do Wordpress. Onde estou errando? 
       
       
    • By kelvinferraz
      Bom dia pessoal!
       
      Estou com uma situação, vou tentar colocar de forma clara e objetiva:

      Possuo uma aplicação que ainda estou em desenvolvimento no Laravel, a ideia da aplicação é liberar o acesso após a confirmação do pagamento de uma mensalidade, se o usuario não efetuar o pagamento ele não libera o acesso.

      Porém existem duas situações:
      É o usuário que vai pagar mensalmente e a verificação seria todo mês de um novo boleto gerado; O usuário que opinar pagar um plano anual então essa verificação seria feita anualmente.  
      A ideia é utilizar ao menos no inicio uma forma de integrar o PagSeguro com o Laravel e fazer essa verificação, eis que surge minha dúvida a que nível isso é possível? Confesso que estou meio perdido em relação a isso, caso alguém tenha algum "case" parecido, será que poderia me dar uma ajuda, ao menos para tentar explicar a melhor forma de fazer esse tipo de validação/acesso?
       
       
      Desde já agradeço a todos!
    • By kelvinferraz
      Bom dia Pessoal tranquilos?

      Estou desenvolvendo uma aplicação web em Laravel é basicamente um sistema de escritorio de advocacia e surgiu uma dúvida do cliente se é possível ele gerar o antecedente criminal de alguém já cadastrado no BD. A parte de cadastro da pessoa já esta funcionando perfeitamente, o que geralmente acontece:
       
      -1º O cliente acessa o site:  http://www2.ssp.sp.gov.br/atestado/novo/Atestado02.cfm 
      -2º Ele preenche os dados do formulário do site
      -3 Gera o documento que sai em PDF

      Realizei umas pesquisas sobre API, Web Service e acredito que tenha encontrado a api do serviço de antecedentes crimais aqui (https://www.servicos.gov.br/api/v1/servicos/788) como consigo criar uma maneira de utilizar essa API para gerar um antecedente de um cliente já cadastrado? 
       
      Exemplo:
      O cliente acessa o sistema, vai em uma opção Antecedentes > Escolhe o cliente que ele deseja gerar > E já retorna o PDF gerado
       
      Se alguém puder me ajudar nisso ficarei grato, ou ao menos explicar como eu faria para utilizar essa API com o Laravel.
    • By kelvinferraz
      Bom dia Pessoal,
       
      Estou com um problema que talvez muitos já devem ter passado, eu criei um FormRequest de um cadastro que fiz para validar os campos de anexo que vai para o BD. Incluindo a seguinte regra do name anexo_rg
        return [ 
                 'anexo_rg'           => 'mimes:jpeg,png,jpg,pdf|max:2048', 
              ];
       
      O campo não é required, porém ele fica pedindo para inserir um arquivo do tipo que foi criado na regra, ou seja, ele esta forçando um required no anexo, como consigo ignorar quando não possuir anexo?

      OBs: Eu criei um campo hidden para enviar um texto "NÃO POSSUI ANEXO". Antes de eu criar esse FormRequest ele conseguia deixar o anexo vazio, porém não tinha regras e a pessoa conseguia anexar qualquer tipo de arquivo.
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.