Comparar revisiones

Consideraciones de Seguridad

Revisión 335007:

Revisión 335007 de ccarruitero el

Revisión 338717:

Revisión 338717 de jesanchez el

Título:
Consideraciones de Seguridad
Consideraciones de Seguridad
Enlace amigable (slug):
Persona/Security_Considerations
Persona/Security_Considerations
Etiquetas:
"Persona"
"Persona"
Contenido:

Revisión 335007
Revisión 338717
n8      Cuando agregas a tu sitio web soporte para Persona, Personan8      Cuando agregas soporte para Persona en tu sitio web, Person
> toma tantas medidas de seguridad como puede. Sin embargo, alguna>a toma tantas medidas de seguridad como puede. Sin embargo, algun
>s medidas de seguridad solo pueden ser manejados por tu sitio web>as medidas de seguridad solo pueden ser manejados por tu sitio we
>. Estas son listadas a continuación.>b. Estas son listadas a continuación.
n17      Cuando utilizas Persona, las declaraciones de identidad sonn17      Cuando utilizas Persona, las declaraciones de identidad son
> pasada dentro de la función <code>onlogin</code> a través de> pasadas dentro de la función <code>onlogin</code> a través de
n23      <em>Siempre</em> debes pasar la declaración a tu servidor pn23      <em>Siempre</em> debes pasar la declaración a tu servidor p
>ara verificarla, y solo tu servidor debe decidir si autorizar al >ara verificarla, y solo tu servidor debe decidir si autoriza al u
>usuario permisos adicionales en base al resultado de la verificac>suario permisos adicionales en base al resultado de la verificaci
>ión:>ón:
n52      <li>No confie en el Host header enviado por el navegador den52      <li>No confie en la cabecera o header Host enviado por el n
>l usuario.>avegador del usuario.
n54      <li>No confie en el parámetro explicito enviado por el naven54      <li>No confíe en el parámetro explicito enviado por el nave
>gador del usuario, pero generado usando JavaScript, e.g. <code>do>gador del usuario, pero generado usando JavaScript, e.g. <code>do
>cument.location</code>.>cument.location</code>.
n58      Si dejas que el navegador del usuario te envie el parametron58      Si dejas que el navegador del usuario te envíe el parametro
> <code>audience</code>, esto deja la posiblidad de que un sitio w> <code>audience</code>, esto deja la posiblidad de que un sitio w
>eb malicioso pueda reusar las declaraciones de su sitio web para >eb malicioso pueda reusar las declaraciones de su sitio web para 
>autenticarse en tu sitio web.>autenticarse en tu sitio web.
n76      En un ataque de login CSRF (Cross-Site Request Forgery), eln76      En un ataque de inicio de sesión por CSRF (Cross-Site Reque
> atacante utiliza CSRF para logear al usuario dentro del sitio we>st Forgery), el atacante utiliza CSRF para iniciar la sesión de
>b usando las credenciales del atacante.>usuario dentro del sitio web usando las credenciales del atacante
 >.
n79      Por ejemplo: un usuario visita una web maliciosa&nbsp; que n79      Por ejemplo: un usuario visita una web maliciosa que contie
>contiene un elemento <code>form</code>. El atributo <code>action<>ne un elemento <code>form</code>. El atributo <code>action</code>
>/code> del <code>form</code> está configurado para hacer una peti> del <code>form</code> está configurado para hacer una petición H
>ción HTTP POST a <a class="external" href="http://www.google.com/>TTP POST a <a class="external" href="http://www.google.com/login"
>login" title="http://www.google.com/login">http://www.google.com/> title="http://www.google.com/login">http://www.google.com/login<
>login</a>, dandole el username y password del atacante. Cuando el>/a>, dandole el username y password del atacante. Cuando el usuar
> usuario envia el <code>form</code>, el pedido es enviado a Googl>io envia el <code>form</code>, el pedido es enviado a Google, el 
>e, el login ocurre y el servidor de Google configura una cookie e>login ocurre y el servidor de Google configura una cookie en el n
>n el navegador del usuario. Ahora el usuario sin saberlo ha sido >avegador del usuario. Ahora el usuario sin saberlo ha iniciado se
>logeado con la cuenta Google del atacante.>sión con la cuenta Google del atacante.
n82      El ataque puede ser usado para reunir información sensible n82      El ataque puede ser usado para reunir información sensible 
>del usuario. Por ejemplo, <a class="link-https" href="https://www>del usuario. Por ejemplo, <a class="link-https" href="https://www
>.google.com/history/">Web History</a> de Google tiene la caracter>.google.com/history/">Web History</a> de Google tiene la caracter
>ística de registrar todos los términos de busqueda del usuario. S>ística de registrar todos los términos de busqueda del usuario. S
>i el usuario se logea dentro de la cuenta Google del atacante y e>i el usuario inicia sesión dentro de la cuenta Google del atacant
>l atacante tiene la característica Web History activada, el usuar>e y el atacante tiene la característica Web History activada, el 
>io le estará enviando toda su información al atacante.>usuario le estará enviando toda su información al atacante.
n85      Ataques de CSRF login, y defensas potenciales contra esto, n85      Los ataques de inicio de sesión CSRF, y defensas potenciale
>son documentados con mayor detalle en <a class="external" href="h>s contra éstos son documentados con mayor detalle en <a class="ex
>ttp://www.adambarth.com/papers/2008/barth-jackson-mitchell-b.pdf">ternal" href="http://www.adambarth.com/papers/2008/barth-jackson-
>>Robust Defenses for Cross-Site Request Forgery</a> (PDF). Ellos >mitchell-b.pdf">Robust Defenses for Cross-Site Request Forgery</a
>no son especificos de Persona: la mayoría de mecanismos de login >> (PDF). Estos ataques no son especificos de Persona: la mayoría 
>son potencialmente vulnerables a ellos.>de mecanismos de inicio de sesión son potencialmente vulnerables 
 >a ellos.
n91      Una propuesta es crear un identificador secreto en el servin91      Una propuesta es crear un identificador secreto en el servi
>dor, compartido con el navegador, y requierir al navegador que lo>dor, compartido con el navegador, y requerir al navegador que lo 
> proporcione cuando realize un pedido de logeo. Por ejemplo:>proporcione cuando realize un pedido de inicio de sesión. Por eje
 >mplo:
n94      <li>Tan pronto como el usuario visite su sitio, antes de inn94      <li>Tan pronto como el usuario visite su sitio, antes de in
>tentar logearse cree una sesión para él en el servidor. Almacene >tentar iniciar sesión cree una sesión para él en el servidor. Alm
>el ID de la sesión en un cookie del navegador.>acene el ID de la sesión en una cookie del navegador.
n100      <li>Asegurese que el envio AJAX o la petición POST del formn100      <li>Asegurese que el envio AJAX o la petición POST del form
>ulario incluya el CSRF token.>ulario incluya el token CSRF.
n102      <li>En el lado del servidor, antes de aceptar la declaración102      <li>En el lado del servidor, antes de aceptar la declaració
>n, revise que el CSRF token enviado concuerde con el alojado por >n, revise que el token CSRF enviado concuerde con el alojado por 
>la sesión.>la sesión.
n115      SI utilizas CSP en tu siitio, es posible que necesito modifn115      SI utilizas CSP en tu siitio, es posible que necesites modi
>icar su politica para permitir Persona. Dependiendo de su politic>ficar tu politica para permitir Persona. Dependiendo de tu políti
>a, puede necesitar:>ca, puedes necesitar:
n118      <li>Remover inline <code>javascript:</code> URIs y reemplazn118      <li>Remover inline <code>javascript:</code> URIs y reemplaz
>arlos con código cargado desde un archivo script adicional. El ar>arlos con código cargado desde un archivo script adicional. El ar
>chivo puede ver elementos basandose en su ID, y luego atacar al e>chivo puede ver elementos basandose en su ID, y luego atacar al e
>lemento configurando {{ domxref("element.onclick", "onclick") }} >lemento configurando {{ domxref("element.onclick", "onclick") }} 
>o llamando {{ domxref("element.addEventListener()", "addEventList>o llamando a {{ domxref("element.addEventListener()", "addEventLi
>ener()") }}.>stener()") }}.
t120      <li>Permitir <code>https://login.persona.org</code> como <ct120      <li>Permitir <code>https://login.persona.org</code> como <c
>ode>script-src</code> y <code>frame-src</code> para que el archiv>ode>script-src</code> y <code>frame-src</code> para que el archiv
>o pueda cargar archivo remoto&nbsp; <code>include.js</code>&nbsp;>o pueda cargar el archivo remoto&nbsp; <code>include.js</code>&nb
> y ese archivo pueda comunicarse con la llamada a la implementaci>sp; y ese archivo pueda comunicarse con la llamada a la implement
>ón de Persona.>ación de Persona.

Volver al historial