"Diese Operation ist unsicher", wenn Klasseneigenschaften als Schlüssel verwendet werden

9

Ich habe eine benutzerdefinierte FileArgument -Klasse, die ich verwende, um Informationen über eine hochgeladene Datei zu speichern:

%Vor%

Mein Upload funktioniert einwandfrei und der Server gibt dann den Pfad zurück, in dem die Datei hochgeladen wurde. Ich möchte dann diesen Pfad in einem Wörterbuch mit einem zuvor festgelegten fileArgument.name als Schlüssel speichern. Im Folgenden finden Sie eine vereinfachte Übersicht meiner Komponente. onSubmit() ist der Ort, an dem die Aktion stattfindet:

%Vor%

Zeile 14 oben ( this.moduleArguments[this.fileArgument.name] = response.filename; ) verursacht den folgenden Fehler in Firefox:

%Vor%

und in Chrome:

%Vor%

Wenn ich diese Zeile durch zum Beispiel ersetzen:

%Vor%

Ich bekomme keine Fehler. Der Fehler kommt eindeutig von der Verwendung von fileArgument.name als Diktatschlüssel, aber ich habe keine Ahnung warum.

EDIT: Die postFile() -Methode von meinem Dienst ist unten:

%Vor%

Die Komponente HTML:

%Vor%     
Juicy 10.09.2016, 15:41
quelle

3 Antworten

3

In onChange , fileArgument.name wird auf den Wert von event.originalTarget.id gesetzt - die ID eines tatsächlichen HTML-Elements auf der Seite

Und chrome Fehler sagt:

%Vor%

Bearbeiten, seit Sie den HTML-Code hinzugefügt haben - Sie haben die Eigenschaft 'moduleArguements' an das ngmodel des Dateieingabeelements gebunden - als Ergebnis führt die Änderung dieses Wertes dazu, dass angular versucht, die value -Eigenschaft der Dateieingabe zu ändern, die nicht erlaubt ist .

Was ist der Zweck, diesen Wert zu aktualisieren? Ist es nur eine Rückmeldung an den Benutzer?

Wenn Sie die ngModel-Bindung aus dem Eingabeelement entfernen, sollte es funktionieren - Sie verwenden das onFileChange-Ereignis, um den neuen Dateinamen trotzdem zu erfassen (obwohl es im Controller nur onChange ist?)

    
Chris Simon 13.09.2016, 03:18
quelle
0
___ qstntxt ___

Ich habe eine benutzerdefinierte this.moduleArguments[this.fileArgument.name] -Klasse, die ich verwende, um Informationen über eine hochgeladene Datei zu speichern:

%Vor%

Mein Upload funktioniert einwandfrei und der Server gibt dann den Pfad zurück, in dem die Datei hochgeladen wurde. Ich möchte dann diesen Pfad in einem Wörterbuch mit einem zuvor festgelegten this.fileArgument.name als Schlüssel speichern. Im Folgenden finden Sie eine vereinfachte Übersicht meiner Komponente. File ist der Ort, an dem die Aktion stattfindet:

%Vor%

Zeile 14 oben ( File ) verursacht den folgenden Fehler in Firefox:

%Vor%

und in Chrome:

%Vor%

Wenn ich diese Zeile durch zum Beispiel ersetzen:

%Vor%

Ich bekomme keine Fehler. Der Fehler kommt eindeutig von der Verwendung von %code% als Diktatschlüssel, aber ich habe keine Ahnung warum.

EDIT: Die %code% -Methode von meinem Dienst ist unten:

%Vor%

Die Komponente HTML:

%Vor%     
___ qstnhdr ___ "Diese Operation ist unsicher", wenn Klasseneigenschaften als Schlüssel verwendet werden ___ tag123dictionary ___ Ein Wörterbuch (oder eine Karte) in der Informatik ist eine Datenstruktur, die Schlüssel auf Werte abbildet, so dass bei einem Schlüssel der entsprechende Wert effizient abgerufen werden kann. Bei Fragen zu Mapping-Funktionen über Datensammlungen verwenden Sie bitte das Tag [map-function]; und für Geographie, [Karten]. ___ tag123angular ___ Fragen zu Angular, dem Web-Framework von Google. Verwenden Sie dieses Tag für Angular-Fragen, die nicht für eine einzelne Version spezifisch sind. Verwenden Sie für das ältere AngularJS-Webframework (1.x) das angularjs-Tag. ___ tag123typescript ___ TypeScript ist eine typisierte Obermenge von JavaScript, die von Microsoft erstellt wurde. Sie fügt optionale Typen, Klassen, async / await und viele andere Features hinzu und kompiliert JavaScript. Dieses Tag steht für spezifische Fragen zu TypeScript. Es wird nicht für allgemeine JavaScript-Fragen verwendet. ___ answer39463201 ___

hast du es versucht:

%Vor%

und auch wenn du irgendwo in JS bist, ändere den "Wert" deiner Tag, werden Sie diesen Fehler erhalten, wenden Sie sich an: Ссылка

    
___ answer39456463 ​​___

Kurze Antwort: Sie können den Wert von %code% nicht wirklich ändern, da dies ein Sicherheitsproblem darstellen würde.

Erklärung: Sie würden den tatsächlichen Wert von %code% auf etwas anderes ändern, was es anderen Menschen mit schlechter Absicht ermöglichen würde, dasselbe zu tun. Im Wesentlichen könnte ein Angreifer diesen Namen ändern, um alle Versuche, diese Datei in einer anderen Datei zu verwenden, umzuleiten. Daher konnte Java (oder Flash oder eine andere Programmiersprache) dies aus Sicherheitsgründen nicht programmatisch ändern.

Bei der Problemumgehung setzen Sie nicht wirklich ein %code% -Datenelement, daher sieht JS dies nicht als Sicherheitsrisiko.

Denken Sie daran, [fast] alles, was Sie tun können, wenn Sie den Website / Server-Code (oder den Code, der mit beiden interagiert) verwenden, kann auch ein Angreifer tun. Aus diesem Grund blockiert JS in diesem Fall die Benutzer daran, den Inhalt dieses spezifischen Objekts %code% zu ändern. Hoffe das hilft!

    
___ answer39461709 ___

In %code% , %code% wird auf den Wert von %code% gesetzt - die ID eines tatsächlichen HTML-Elements auf der Seite

Und chrome Fehler sagt:

%Vor%

Bearbeiten, seit Sie den HTML-Code hinzugefügt haben - Sie haben die Eigenschaft 'moduleArguements' an das ngmodel des Dateieingabeelements gebunden - als Ergebnis führt die Änderung dieses Wertes dazu, dass angular versucht, die value -Eigenschaft der Dateieingabe zu ändern, die nicht erlaubt ist .

Was ist der Zweck, diesen Wert zu aktualisieren? Ist es nur eine Rückmeldung an den Benutzer?

Wenn Sie die ngModel-Bindung aus dem Eingabeelement entfernen, sollte es funktionieren - Sie verwenden das onFileChange-Ereignis, um den neuen Dateinamen trotzdem zu erfassen (obwohl es im Controller nur onChange ist?)

    
___
Jake Samz 12.09.2016 18:23
quelle
0

hast du es versucht:

%Vor%

und auch wenn du irgendwo in JS bist, ändere den "Wert" deiner Tag, werden Sie diesen Fehler erhalten, wenden Sie sich an: Ссылка

    
Aran Dekar 13.09.2016 06:07
quelle

Tags und Links