o que é o uso de sal token de anti-falsificação?
-
05-07-2019 - |
Pergunta
Em ASP.NET MVC 1.0, há um novo recurso para lidar com cruz problema de segurança falsificação pedido local:
<%= Html.AntiForgeryToken() %>
[ValidateAntiForgeryToken]
public ViewResult SubmitUpdate()
{
// ... etc
}
Eu encontrei o token gerado em html formulário de ficar mudando a cada vez que um novo formulário é renderizado.
Eu quero saber como estes token é gerado? E quando usar algum software para digitalizar neste site, ele irá relatar outro problema de segurança: Sessão fixo. Por quê? Desde o sustento símbolo mudado, como pode este problema vem?
E há uma outra função, que é "sal" para o antiForgeryToken
, mas eu realmente sei o que este utilizado para, mesmo através de nós não usamos "sal" para gerar o token, a vontade símbolo muda o tempo todo, então, por que tem essa função?
Solução
Muita informação sobre a AntiForgeryToken aqui: http://blog.codeville.net/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/
Isso é para evitar um Request Forgery Cross-Site (CSRF). É um comportamento bastante normal para clicar em 'Save' preencher um formulário e realizar alguma ação no servidor, ou seja, salvar detalhes de um usuário. Como você sabe que o usuário enviar o formulário é o usuário que dizem ser? Na maioria dos casos você pode usar alguns biscoitos ou janelas auth base.
O que se um intruso iscas você para um site que apresenta exatamente a mesma forma em um pouco escondido IFRAME? Seus cookies obter apresentado intacto e o servidor não vê o pedido como qualquer diferente a um pedido legítimo. (Como gmail descobriu: http: //www.gnucitizen. org / blog / google-gmail-e-mail-hijack-técnica / )
Os anti-falsificação impede de token esta forma de ataque por criação de um sinal cada vez que uma página biscoito adicional é gerada. O token é tanto na forma e o cookie, se o formulário e cookies não correspondem temos um ataque de CSRF (como o atacante não seria capaz de ler o anti-falsificação de token usando o ataque descrito acima).
E o que o sal faz, a partir do artigo acima:
O sal é apenas uma seqüência arbitrária. Um valor diferente sal significa um sinal anti-falsificação diferente será gerado. Isto significa que mesmo se um atacante consegue se apossar de um token válido de alguma forma, eles não podem reutilizá-lo em outras partes da aplicação, onde é exigido um valor sal diferente.
Update: Como é gerado o token? Faça o download do fonte e ter um olhar para as classes AntiForgeryDataSerializer, AntiForgeryData.
Outras dicas
Você tem fazer algumas problemas não relacionados:
- Não sei por que o seu software de segurança está relatando 'sessão fixo'. Tente ler a documentação que vem com o relatório
- O anti-falsificação token:
Isto é usado (presumivelmente) para validar que cada pedido é válido. Por isso, considero que alguém tenta apresentar um link para o ?x=1
página, se o token não é também passou, o pedido será rejeitado. Além disso, ele (pode) evitar a postagem duplicada do mesmo item. Se você clicar em 'post' duas vezes, a mudança provavelmente vontade de token (cada pedido), e neste caso será detectado através de algo como:
Session["nextToken"] = token;
WriteToken(token);
...
if( !Request["nextToken"] == Session["nextToken"] ){
...
}
// note: order in code is slightly different, you must take the token
// before regenerating it, obviously
Eu acho que o prazo para isso (o ataque ele protege) é chamado de "CSRF" (Cross-Site Request Forgery), nos dias de hoje.