Usamos jsp, servlets, beans con base de datos mysql. No queremos restringir los caracteres ingresados por los usuarios en los campos de formulario. Entonces, ¿cómo puedo desinfectar la entrada y cómo asegurarme de que la salida no se modifique para actividades maliciosas? ¿Hay alguna forma de enviar el resultado que podría verificar si se envió código adicional? Supongamos que hay un campo de entrada de búsqueda: el usuario da algo como <script>alert("I am here")</script>
. ¿Existe alguna manera de que pueda saber que esta es una etiqueta html? Si el usuario agrega un parámetro adicional a un campo de enlace, ¿hay algo así como un control de antes y después que pueda hacer para que el documento se dé cuenta de que ha habido un campo de enlace adicional?La mejor manera de desinfectar la entrada en la aplicación web Java
Respuesta
Siempre debe hacer un escaneo básico de HTML de los datos tomados de fuentes como la entrada del usuario o la base de datos que pueden contener caracteres no válidos. La etiqueta JSP <c:out>
hace esto, por ejemplo. De esta forma, si el usuario ingresa "<script> ..."
en un campo y lo está imprimiendo de nuevo, se imprimirá en HTML como "<script> ..."
.
Realmente debería permitir a los usuarios ingresar la menor cantidad de HTML y/o javascript posible. Una buena solución para validar y desinfectar esto es usar una biblioteca preparada como OWASP AntiSamy.
También, consulte OWASP Enterprise Security API para obtener una colección de métodos de seguridad que un desarrollador necesita para crear una aplicación web segura.
Dé jsoup
para ayudarlo con esto. Hagas lo que hagas, no trates de hackear esto usando expresiones regulares o algo así, porque entonces tendrás 2 problemas. :-)
Con jsoup
, todo lo que necesita es un breve fragmento de código:
String safe = Jsoup.clean(unsafe, Whitelist.basic());
Puede añadir etiquetas y atributos a Whitelist
con bastante facilidad, aunque me pareció que no soporta etiquetas de espacio de nombres.
- 1. La mejor manera de demonizar la aplicación Java en Linux
- 2. La mejor manera de autenticar usuarios en una aplicación web
- 3. La mejor manera de burlarse del servicio web de Java
- 4. ¿La mejor manera de depurar la aplicación web Java empaquetada como WAR utilizando Eclipse y Maven?
- 5. mejor manera de verificar el rendimiento de la aplicación web
- 6. .NET bibliotecas para desinfectar la entrada?
- 7. ¿La mejor manera de guardar datos en una aplicación Java?
- 8. Cómo desinfectar la entrada de la base de datos ODBC?
- 9. ¿Cómo debo desinfectar la entrada de la base de datos en Java?
- 10. ¿La mejor manera de validar la entrada de moneda?
- 11. La mejor manera de integrar el navegador en la aplicación Java
- 12. La mejor manera de matar la instancia de la aplicación
- 13. Al usar Wordpress, ¿alguien puede decirme cuál es la mejor manera de desinfectar las entradas?
- 14. ¿Cuál es la mejor manera de guardar la configuración del usuario en la aplicación Java?
- 15. ¿cuál es el mejor alojamiento para la aplicación web java?
- 16. ¿Cuál es la mejor manera de hacer una aplicación web java modular
- 17. ¿La mejor manera de guardar los cambios en la aplicación web MVVM/Knockoutjs?
- 18. mejores prácticas de la aplicación web java
- 19. ¿La mejor manera de usar la memoria de perfil en una aplicación Java?
- 20. La mejor forma de implementar la aplicación web Zend
- 21. La mejor manera de analizar Java en Java
- 22. La mejor manera de desinfectar los campos en ruby on rails
- 23. ¿La mejor manera de probar la aplicación web de los rieles?
- 24. ¿La mejor manera de implementar la autorización detallada para una aplicación web?
- 25. La mejor manera de evitar la entrada duplicada en la base de datos mysql
- 26. Logging Cambios de la entidad en la aplicación web Java
- 27. La mejor manera de imprimir informes simples en java
- 28. Convertir Java Swing a la aplicación web
- 29. ¿Cuál es la mejor manera de modernizar la aplicación J2EE de la era 2002?
- 30. La mejor manera de usar la guayaba
Por favor, considere cambiar el nombre de sus preguntas a algo así como "La mejor manera de desinfectar la información en Java": el título de su pregunta no ayudará a quienes buscan respuestas similares en el futuro ... – razlebe
Whoa, cuando vaya a volver a la pregunta, ejecuta el javascript en la pregunta! Mala stackoverflow, ¡malo! –
@robhruska: ¡Buen descubrimiento! – Adnan