2011-08-05 35 views
17

Estoy probando un formulario web ASP.NET que necesita filtrar los caracteres nulos de la entrada.¿Cómo ingresar un carácter nulo en un formulario web?

Para probar esta funcionalidad, ¿cómo puedo escribir un carácter nulo en el formulario html? He intentado Alt + 0 pero no funciona.

Sé que puedo hacerlo en una solicitud GET utilizando "% 00" en la URL. Sin embargo, quiero hacerlo en una forma POST.

+2

Esta pregunta me hace doler la cabeza. En cierto modo, quiere saber cómo escribir nada. – Joe

+0

Me refiero al carácter nulo, "\ 0". En Unicode, es \ x00. – frankadelic

+1

Si desea saber específicamente sobre escribir/pegarlo (en lugar de encontrar una solución programática/automatizada), sería mejor que lo haga en superusuario.com, aunque una búsqueda rápida parece indicar que no es posible. – mercator

Respuesta

7

Pude hacer esto usando el complemento TamperData Firefox.

https://addons.mozilla.org/en-US/firefox/addon/tamper-data/

Cuando se da la Tamper emergente Mecanografié "% 00 " en el campo Valor de parámetro del anuncio.

Aún así, no puedo encontrar la manera de escribir un carácter nulo solo con el teclado.

+0

Me encantó TamperData. Ahora uso Chrome, pero a veces reflexiono sobre lo que perdí cuando cambié a Chrome ... –

+1

@AustinBurk, seguramente también hay uno para Chrome ..... – Pacerier

+0

@Pacerier Nope. Lo más cerca que he podido conseguir es tropezar con el depurador en 'Todas las xmlhttprequests' y rastrearlo hasta el código fuente JavaScript. Nada ha igualado hasta ahora. –

0
<html> 
    <body onload='document.forms[0].submit();'> 
     <form method="post" action="http://localhost/test.asp" > 
      <input type="hidden" name="param" value="%00"> 
     </form> 
    </body> 
</html> 
+1

Quiero que los verificadores de QA realmente puedan escribir en su navegador. – frankadelic

+1

Debido a la forma en que se implementa el portapapeles del sistema operativo, no hay posibilidades de que un comprobador de control de calidad pueda pegar un byte NULO en un campo. Sugiero que cree un archivo HTML como el ejemplo anterior y haga que el verificador de QA lo busque. Si desea que el comprobador de QA tenga más libertad (eligiendo qué campo debe recibir el byte NULO) considere implementar una página ASP que automáticamente analizará la cadena de consulta y creará un formulario de envío automático como el proporcionado –

+0

Si pegar no es una opción , ¿puede un byte nulo ser simplemente escrito a través de una secuencia de control? – frankadelic

0

Puede usar una entidad HTML. No es totalmente seguro de cuántos ceros son necesarios, pero:

&#0; 

Para un carácter Unicode arbitraria que es más fácil de usar la notación hexadecimal. Por ejemplo, &#x335D; prints & # x335D; que es U+335D.


Actualización: Esta pregunta es muy difícil de hecho. Logré insertar un carácter nulo dentro de un documento HTML (usando un script del lado del servidor y verificado con un editor hexadecimal). Como se esperaba, no hay diferencia con la entidad HTML, que puede ser either &#0; or &#x0;. Pero el navegador no envía el personaje en la solicitud posterior (probado con Firefox y Firebug): envía %EF%BF%BD, que es REPLACEMENT CHARACTER' (U+FFFD). Exactamente, envía la marca de interrogación en un recuadro que se usa para imprimir el nulo en el documento (dado que nulo no se puede imprimir).

Supongo que los probadores deben guiar la tarea.

+3

Ese no es un carácter nulo. Es la representación de la entidad HTML de un carácter nulo. – frankadelic

+1

Mis excusas, hice una prueba rápida pero fue defectuosa.Informaré si puedo hacerlo funcionar o eliminar la pregunta. –

0

Utilice AJAX para enviar el formulario. Es decir. pegar algo como esto en la barra de direcciones en lugar:

javascript:(function(){var xhr=new XMLHttpRequest();xhr.onreadystatechange=function(){if(this.readyState==4){document.write(this.responseText)}};xhr.open("POST",'/form',true);xhr.send("\0");})() 

Aquí se desenvuelve, por lo que en realidad se puede ver que:

(function() { 
    var xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange = function() { 
     if (this.readyState == 4) { 
      document.write(this.responseText); 
     } 
    }; 
    xhr.open("POST", '/form', true); 
    xhr.send("\0"); 
})() 

Hay algunas limitaciones a esto, por supuesto, ya que a ciegas reemplaza el contenido de la página actual con lo que obtuvo. Pero esto podría ser suficiente para decir si algo salió mal o no.

-2

Un carácter latino O con una barra oblicua es a menudo aceptable como un símbolo para Null/Nul (o en blanco si lo prefiere). Si está utilizando aplicaciones basadas en bases de datos, querrá desinfectar este símbolo para reemplazarlo con nulo o en blanco, según sus necesidades.

cómo hacerlo: ALT + 0216 en su editor favorito debe dar o - lo que es, para este propósito pantalla, nulo.

Luego, como ejemplo y práctica recomendada, desinfectará el envío del formulario antes de que se pase a la base de datos.

Ejemplo de caso: Si la alimentación de un sitio con bases de datos PHP, el saneamiento de este carácter específico de esto podría ser algo como ...

O tratar ...

$dbstring = str_replace(Ø,""); and the value will be BLANK 

! alternativamente, es posible que desee hacer esta visualización con los códigos de entidad HTML, que menciono a continuación.

Alt + 0216 explicó Si se utiliza un teclado normal de 104 teclas con Inglés (americano) establecer como idioma principal, mantenga pulsada la tecla ALT y, mientras mantiene, utilice las teclas de teclado numérico para entrar en 0216. A continuación, suelta la tecla ALT, y tu personaje debería aparecer. * Este es principalmente un método de Windows. Usuarios de Macintosh, (X) nix y bsd, probablemente se quede estancado al usar los códigos de entidad HTML.

Nota especial: el uso de los números de la parte superior del teclado no funciona. Si está en una computadora portátil u otro dispositivo que lo hace difícil o imposible. probar una alternativa: Utilice los códigos de entidad HTML:

&Oslash; = Ø (usually for null) 
&oslash; = ø (could be used, but the upper-case version seems more appropriate.) 

Otros pensamientos que pueden ser útiles: Nul vs nulo vs blanco - Ellos básicamente significan lo mismo, pero con diferentes lenguajes de programación utilizan o requieren éstos de manera diferente . (Hay otros también, como NULPTR de puntero nulo.)

El punto que estoy tratando de hacer con NUL/NULL, es que la variable presentado 'no existe' o simplemente 'no era en absoluto' . En la mayoría de los contextos, simplemente puede llamar a esto "nulo" y ser entendido.

Algunos sistemas de bases de datos tratan en blanco y NULO como la misma cosa. Otros, en blanco es en realidad un valor vacío, mientras que NULL no tiene ningún valor (como se mencionó anteriormente).

Espero que esto ayude a construir la vista que está buscando.

Cuestiones relacionadas