angularjs + cross-site scripting prevención de

Es Angularjs se ocupa de ataque XSS. He leído que la ng-bind cuida. Pero Cuando intento hacer una muestra para probar que, me permite insertar etiquetas html en el tipo de entrada con ng-model…no escapar de las etiquetas Html.

Tengo mucho de elemento de entrada en nuestra página, que se une con ng-model, ¿qué debo hacer para asegurarse de que si yo de entrada de una de las etiquetas html ,angular ignora el html/scrip etiquetas.

ex.

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

si yo de entrada como

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

$scope.nombre contiene la misma lo que entré ,no excluir las etiquetas. yo.e

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

impresiones de la misma

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

Por favor, hágamelo saber cómo resolver esta en angularjs.

gracias

  • Por supuesto, las etiquetas están aquí, pero no se interpreta ! Es peligroso si estas etiquetas son interpretados !
  • Estas etiquetas son la salida Angular como &lt;b&gt; en realidad, la mayoría de los navegadores mostrarán como <b> pero no será interpretado como etiqueta HTML.
InformationsquelleAutor dav10 | 2014-04-11

2 Kommentare

  1. 27

    Mira aquí : http://docs.angularjs.org/api/ngSanitize/service/$desinfectar

    Si quieres escapar de uso ng-bind, se ll representar la etiqueta sin interpretación como que :

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

    ¿Entiendes ? así ng-bind es seguro porque no se preocupa de las etiquetas HTML.

    Si quieres que tus etiquetas HTML de ser interpretado, pero de manera segura solo uso ng-bind-html !

    Por ejemplo, si desea mostrar esta cadena :

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

    El resultado será : Hola Mundo, pero sin la entrada porque AngularJS compilador utiliza $desinfectar el servicio y la verificación de una lista blanca de los elementos HTML y un iput no está autorizado.

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

    Si usted sólo quiere asegurarse de que el usuario no puede poner las etiquetas html en tu entrada a solo usar la directiva ng-patrón en sus entradas !

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

    Toma un regex para caracteres permitidos en tu entrada !

    Espero que ayude !

    • Pero yo estoy usando ng-modelo para todos los elementos de entrada en todas las páginas.Entonces, ¿cómo puedo prevenir la vulnerabilidad de XSS en ng-model entradas? Como ng-bind es de una manera y ng-modelo es de dos vías, debo evitar para ng-model. También he intentado utilizar ng-bind para el elemento de entrada y de la etiqueta , todavía me permitió tener etiquetas html dentro. ex. <label ng-bind=»primero»></label> <input ng-bind=»nombre»> .En el controlador : $scope.primera = «Hola» <b>Mundo</b><input type=»text» />’; $scope.nombre= «Hola» <b>Mundo</b><input type=»text» />’; Se muestra la etiqueta de entrada y con las etiquetas de html, me.e no escapar de las etiquetas; así ng-bind también funcionó.
    • He editar la respuesta uso ng-patrón de la directiva
    • así que u decir, angularjs es no apoyar en construir en ng-modelo de la vulnerabilidad XSS en la prevención.y la aplicación de ng-patrón en todos los lugares donde es más trabajo..déjame saber si alguna otra manera de lograrlo. Pero angulares faq dice que ofrece una función de protección de la seguridad básica agujeros como cross-site scripting y ataques de inyección de código HTML. docs.angularjs.org/misc/faq . gracias..
  2. 10

    No creo que AngularJS tiene un valor predeterminado de la lista blanca de validación de entrada, que es lo que tus ejercicios de prueba. De modo que un usuario puede casi de entrada lo que quiera. Esto no es sorprendente – listas blancas son muy específicos del dominio, y Angulares es un framework diseñado para una amplia gama de dominios.

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

    Línea de fondo es que AngularJS está diseñado para ser seguro de XSS por defecto, no se requiere acción. Usted puede verificar algunos escenarios básicos tratando de salida de lo que se introduzca en una vista con la normal {{scopevariable}} notación.

    Me hizo encontrar un análisis detallado de AngularJS vulnerabilidad de XSS: https://code.google.com/p/mustache-security/wiki/AngularJS. Al final de los comentarios, hay un enlace a un documento de google con más de discusión y respuesta de los angular del equipo.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea