JavaFree.org | RubyOnBr.org

Checklist de Segurança em Rails

Acompanhar Checklist de Segurança em Rails 6 posts, 5 participantes

Avatar Ronie Uliana 891 posts

Ainda no quesito, “boas práticas em Rails”, eu achei esse post:

http://rubythis.blogspot.com/2006/11/rails-security-checklist.html

Ele dá um checklist de segurança para Rails, à primeira vista, muito bom.

Só algumas ressalvas:

  • “Make non-action controller methods private (if possible).” – Eu prefiro “protected”
  • “Move queries from your controller to your model, and see the model checklist above.” – Não acho isso problema de segurança, só de estilo.
  • “Eliminate comments in your views that you don’t wish the entire world to see.” – Não acho q seja problema de segurança, realmente.

No mais, a lista é muito boa!

 
Avatar jmp 104 posts

Check for params[:id] usage – are you sure you can trust it? Check for proper ownership of the record.

Eu tinha esquecido desse detalhe na aplicacaozinha que estou fazendo, muito importante.

 
Avatar Ronaldo 388 posts

Lista muito boa. Eu também prefiro protected, especialmente porque abuso de herança em controllers…

Para essa lance do id, geralmente eu o substituo por alguma coisa que faça mais sentido visualmente (slugs, por exemplo, no caso de um CMS). Além de facilitar a vida do usuário, sempre me força a lembrar de tratar antes. E o hit de performance é mínimo.

 
Avatar Darkseid 36 posts

Nao entendi essa do Id, o q quer dizer?

 
Avatar Ronie Uliana 891 posts

Pra você salvar algum registro, normalmente um dos campos é o id do registro que vc vai salvar.

Pegue o exemplo do fórum… cada um que postou aqui pode editar seu próprio post. Agora imagina que ao editar seu post, vc troca o id dele e só aí submete. Se o Rails não checar se aquele post é seu mesmo antes de salvar, vc vai conseguir editar o post dos outros, aliás, de qualquer um.

Por isso, vale a regra: antes de exibir ou salvar, verique se o usuário realmente pode ter acesso àquilo, afinal, um usuário esperto pode passar qq id via campo hidden ou via link (como é de praxe no Rails)

 
440002948_b8dc8436b4 Marcelo Júnior 799 posts

E como faço para o Id não ficar tão vulnerável assim?