vulnerabilities site cross book angularjs xss cross-site

site - angularjs+prevención de scripts entre sitios



csrf angular 5 (2)

Is Angularjs se encarga del ataque XSS. He leído que ng-bind cuida. Pero cuando trato de hacer una muestra para probar eso, me permite insertar etiquetas html en el tipo de entrada con ng-model ... no escapó a las etiquetas Html.

Tengo una gran cantidad de elementos de entrada en nuestra página, que se enlaza con ng-model, ¿qué debo hacer para asegurarme de que al ingresar las etiquetas html, angular ignora las etiquetas html / scrip?

ex.

<input id="name" ng-model="name"></input>

si entro como

''Hello, <b>World</b>!''

$ scope.name contiene lo mismo que ingresé, no excluyó las etiquetas. es decir

var val = $scope.name; console.log(val);

imprime igual

''Hello, <b>World</b>!''

Por favor, déjame saber cómo resolver esto en angularjs.

gracias


Mire aquí: http://docs.angularjs.org/api/ngSanitize/service/$sanitize

Si desea usar escape ng-bind , esta representará la etiqueta sin una interpretación como esa:

Hello <b>World</b> no como Hello World !

Lo entiendes ? por lo tanto, ng-bind es seguro porque no le importan las etiquetas HTML.

¡Si quiere que sus etiquetas HTML sean interpretadas pero de manera segura solo use ng-bind-html!

Por ejemplo, si desea mostrar esta cadena:

''Hello <b>World</b><input type="text" />''

El resultado será: Hello World pero sin la entrada porque el compilador AngularJS usa el servicio $ sanitize y verifica una lista blanca de elementos HTML y no se autoriza un iput.

Tal vez ng-bind-html es lo que estás buscando.

Si solo desea, asegúrese de que el usuario no pueda poner etiquetas html en su entrada, simplemente use la directiva ng-pattern en sus entradas.

http://docs.angularjs.org/api/ng/directive/input

¡Se necesita una expresión regular para los caracteres permitidos en tu entrada!

Espero eso ayude !


No creo que AngularJS tenga una validación de entrada predeterminada en la lista blanca, que es lo que su prueba ejerce. Así que un usuario puede ingresar prácticamente lo que quiera. Esto no es sorprendente: las listas blancas son muy específicas del dominio, y Angular es un marco diseñado para una amplia gama de dominios.

La principal defensa contra XSS es codificar correctamente todos los datos que no son de confianza (consulte https://www.owasp.org/index.php/Top_10_2013-A3-Cross-Site_Scripting_(XSS) ). Esto, Angular lo hace por defecto.

La conclusión es que AngularJS está diseñado para ser seguro de XSS por defecto, no se requiere ninguna acción especial. Puedes verificar algunos escenarios básicos intentando generar lo que {{scopevariable}} en una vista usando la notación normal {{scopevariable}} .

Encontré un análisis detallado de la vulnerabilidad de AngularJS XSS: https://code.google.com/p/mustache-security/wiki/AngularJS . Al final de los comentarios, hay un enlace a un documento de Google con mayor discusión y respuesta del equipo angular.