Frage htmlentities-Sicherung bei Datenbezug aus JSON-Format

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

StephanBo

Mitglied
28 Januar 2012
175
0
16
Der Interessehalber:

Ich beziehe von einem Anbieter Daten im JSON-Format und will diese in einer DB speichern. Ist es hier erforderlich (um SQL-Injections zu vermeiden), die Variablen mit einem htmlentities-Parameter zu sicher oder ist das nicht nötig, da man der Quelle blind vertrauen kann?

Nach meiner Logik könnte eigentlich nur der Datenbereitsteller der JSON-Inhalte eine SQL-Injection provozieren, wobei man sich fragen muss, warum er das machen sollte. Oder gibt es noch die Möglichkeit, dass die JSON-Daten durch einen Dritten manipuliert werden können?

Würde sich eine pauschale htmlentitie-Deklaration jeder einzelnen Variable "merklich" auf die Performance des Scripts auswirken?
 

sysop

Mitglied
10 Juli 2015
154
22
18
www.mn-portal.at
htmlentitie könnte nur Vorteilhaft sein, wenn vor der Speicherung eine Ausgabe erfolgt.
Beim Speichern wird ohnedies IMMER wie vom Vorposter verfahren.
 

StephanBo

Mitglied
28 Januar 2012
175
0
16
Ok, aber ist eine SQL-Injection nicht auch mit einer htmlentities-Deklaration auszuschließen? Man codiert doch alle Sonderzeichen in einen HTML-Code und dieser sollte meiner Meinung nach dann keine SQL-Injection ermöglichen?!
 

StephanBo

Mitglied
28 Januar 2012
175
0
16
Habe ich vorher bereits. Und mein Verständnis hierzu:

Würde man z.B. eine SQL-Injection provozieren und nun das benötigte Anführungszeichen (") hierfür verwenden, würde dies nicht zu einer SQL-Injection führen, weil htmlentities aus einem " ein " macht.

Oder liege ich falsch?
 

StephanBo

Mitglied
28 Januar 2012
175
0
16
Ok, ich deklariere dann mal alles mittels mysqli_real_escape_string, wobei immer noch die Frage im Raum steht, ob man prinzipiell bei einer Datenbeziehung via JSON oder XML die Variablen "schützen" muss oder ob das unnötig ist?
 

sysop

Mitglied
10 Juli 2015
154
22
18
www.mn-portal.at
Was sollte daran unnütz sein, ich kann dir JSON-Daten so übergeben, wie ich möchte.
Bei jeder Speicherung in eine Datenbank sind die Daten zu escapen. Du solltest dir ansehen, was man darunter versteht.