Artigo novo "Fazendo a segurança de seus IDs"
|
|
http://rubyonbr.org/articles/2006/12/07/fazendo-a-segurana-de-seus-ids/ Acabei de liberar mais um artigo. Ele fala sobre uma das formas de ataque mais simples de se fazer e como evitar ele no Rails. |
|
|
Cara, nas versões seguras, tem a seguinte linha:
Bem, eu não entendi esse trecho: session[:user][:id] |
|
|
Este trecho diz que você colocou o usuário autenticado na sessão. Então quando você precisa saber quem está logado você consulta a sessão conforme colocado. session[:user] retorna um objeto (Model) User, depois você pode pegar a ID dele user.id. Bom… A versão acima diz que seu usuário na sessão é um Hash, mas geralmente você coloca um model, então seria melhor ficar: post = Post.find_by_id_and_author_id(params[:id], session[:user].id) :) |
|
|
É… tem um ponto negativo em colocar o Model na sessão. Ele normalmente tem variáveis apontando pra estrutura de persistência (via ActiveRecord::Base), então, enquanto ele estiver na sessão, esses objetos, e todos os objetos relacionados, não podem der coletados pelo Garbage Collector. Não faço idéia se o Rails chega a matar esses objetos, se eles são singletons ou que raio realmente acontece com eles. Mas, por via das dúvidas, o legal é manter apenas objetos “magros” na session, que não tenham referências a nada no sistema além deles mesmos. Hashes, nesse ponto, são ótimos, mas você também pode usar Structs ou valores simples. |

