Anular filtros XSS [duplicado]

1

¿Puede alguien darme una lista de formas para codificar la carga útil XSS, o para ser precisos, cuáles son las formas de codificar la carga útil XSS para omitir la codificación de < > o (). Sé sobre el bypass de doble codificación con% 253c y Unicode, pero quiero saber todos los métodos disponibles. Gracias

    
pregunta Danijel Maksimovic Maxa 19.01.2012 - 19:30
fuente

2 respuestas

2

No creo que sea una buena idea dar instrucciones sobre los ataques XSS; Aunque existen muchos recursos, por ejemplo. Cap. 12 de la WAHH en XSS.

La mejor manera de prevenir ataques XSS es sustituir cada carácter especial utilizado en estos ataques (por ejemplo, < , > , & , " , ' con su carácter html equivalente &lt; , &gt; , &amp; , &quot; , &#39; ) para todo el texto proporcionado por el usuario y solo permite a los usuarios marcar sus comentarios utilizando un lenguaje de marcado no html limitado (como markdown) que solo se sustituye en una caja fuerte subconjunto de html en el último paso del procesamiento. (También tenga cuidado de que sus comentarios nunca se ejecuten en ningún tipo de procesamiento javascript que haya escrito).

Si elige ignorar esto y solo se desinfectan etiquetas específicas (como <script> , <object> , javascript , compruebe que el saneamiento se realiza de forma recursiva (por lo que <scr<script>ipt> no se convierte en <script> después de una -el saneamiento de paso), es insensible a mayúsculas y minúsculas, y solo se detiene cuando el último intento de saneamiento completo no cambió la entrada. En python algo como

import re
def sanitation_single_pass(user_input):
    pattern = re.compile('<[^>]*(script|object|meta|style)[^>]*>', re.IGNORECASE) 
    # this is very quick sample regex that could appear in a sanitation routine
    # not meant to be inclusive of most XSS threats;
    # e.g. this doesn't prevent having javascript in links or img src, etc.
    return pattern.sub('', user_input)


def sanitation(user_input):
    processed_user_input = sanitation_single_pass(user_input)
    while processed_user_input != user_input:
        user_input = processed_user_input
        processed_user_input = sanitation_single_pass(user_input)
    return processed_user_input

También preste atención a los problemas de codificación, asegúrese de definir un conjunto de caracteres ( <meta charset="utf-8"> en la parte superior de sus plantillas html) y de forzar la entrada del usuario en esta codificación antes del saneamiento. También trate de reconocer que algunos navegadores interpretarán cosas como java&#x0A;script como javascript ( &#x0A; es un salto de línea), etc.

    
respondido por el dr jimbob 19.01.2012 - 20:47
fuente
0

Hoja de trucos de XSS, nunca salgas de casa sin ella - enlace

Aunque obviamente esto debería usarse para protegerse y no para propósitos maliciosos. La comunidad está aquí para enseñar y aprender de los demás métodos de seguridad de TI, no para proporcionar métodos de acceso no autorizados.

    
respondido por el doyler 19.01.2012 - 20:10
fuente

Lea otras preguntas en las etiquetas