2017-12-20 6 views
2

Dies ist in Bezug auf die Injektion der Skript-Tag (siehe unten) in einem der Eingabe und Beschreibung. Die Werte werden gut gespeichert und im Raster angezeigt.XSS-Problem in der angularjs-Anwendung

Go to this <script>window.alert('abc')</script> and fill out the FAFSA.

Formularfelder: -

enter image description here

Sie im Screenshot unten sehen kann, dass die Warnung Skript aus dem Beschreibungsfeld ausgeführt wird.

Modal-Implementierung (auf Klick auf den Link in der Liste Dokumenttyp ausführen): -

$rootScope.showNormalModal = function (message) { 
     var modalHtml = "<div class='modal-header'><button type='button' ng-click='cancel()' class='close' data-dismiss='modal' aria-label='Close'>" + 
      "<span aria-hidden='true'>×</span></button> " + 
      "<h4 class='modal-title' id='myModalLabel'><div>" + 
      "</div>" + message + "</h4></div>"; 

     var modalInstance = $modal.open({ 
      template: modalHtml, 
      controller: function ($scope, $modalInstance) { 
       $scope.cancel = function() { 
        $modalInstance.dismiss('cancel'); 
       }; 
      } 
     }); 
    } 
}); 

Wenn der Eingangsparameter Script-Tag mit einigem Betrieb hat, wird in der Benutzeroberfläche, da es nicht zeigt ist, stattdessen läuft das Skript vor dem Modal.

Erwartete Verhalten hier ist, wenn ich auf den Anker in der Auflistung geklickt hat, sollte es seine Beschreibung im Popup anzeigen. Was hier passiert, ist, bevor ich die Beschreibung zeige, bekomme ich ein Alarmfenster wegen der Script-Tag-Injektion.

Wie vermeide ich, dass das Alarmskript vor dem Popup ausgeführt wird.

Alle Screenshots unten angehängt.

Listing Seite: -

Listing Page

Alarmfenster: -

Alert Window

Beschreibung Popup: -

Description

Vielen Dank im Voraus.

+0

Sie einige Standard/public-Komponente verwenden Sie? (bitte Namen, Links)? Andernfalls ist die Antwort so breit wie Ihre Frage: "Sanitize" – 2oppin

+0

Sanitize HTML-Inhalt. https://docs.angularjs.org/api/ngSanitize/service/$sanitize – Ashish

+4

Erstellen HTML über String-Verkettung mit Benutzer bereitgestellten Inhalt sollte immer große blinkende * XSS VULNERABILITY * Warnleuchten in Ihrem Gehirn auslösen - wenn Sie Ihren Code refaktorieren können um das nicht zu tun, würde ich es sehr empfehlen. Andernfalls "sanitize" es. –

Antwort

3

Können Sie bitte Code unten versuchen

$rootScope.showNormalModal = function (message) { 
    var modalHtml = "<div class='modal-header'><button type='button' ng-click='cancel()' class='close' data-dismiss='modal' aria-label='Close'>" + 
    "<span aria-hidden='true'>×</span></button> " + 
    "<h4 class='modal-title' id='myModalLabel'><div>" + 
    "</div><div ng-bind=\"message\"></div></h4></div>"; 

    var modalInstance = $modal.open({ 
    template: modalHtml, 
    controller: function ($scope, $modalInstance, message) { 
     $scope.cancel = function() { 
     $modalInstance.dismiss('cancel'); 
     }; 
     $scope.message = message; 
    }, 
    resolve: { 
     message: function() { 
     return message; 
     } 
    } 
    }); 
} 
+1

Arbeit wie ein Charme ... Vielen Dank bro :) –

+1

Es wäre sehr hilfreich, eine kleine Beschreibung für zukünftige Leser hinzuzufügen. – Rachmaninoff

Verwandte Themen