Bei der Untersuchung des Problems JSON vs XML bin ich auf diese Frage gestoßen . Nun wurde einer der Gründe, JSON zu bevorzugen, als die einfache Konvertierung in Javascript aufgeführt, nämlich mit dem eval()
. Dies kam mir aus Sicherheitsgründen sofort als potenziell problematisch vor.
Deshalb habe ich mich mit den Sicherheitsaspekten von JSON befasst und in diesem Blogbeitrag darüber, wie JSON nicht so sicher ist, wie die Leute denken . Dieser Teil ragte heraus:
Update: Wenn Sie JSON zu 100% ordnungsgemäß ausführen, befinden sich nur Objekte auf der obersten Ebene. Arrays, Strings, Numbers usw. werden alle umbrochen. Ein JSON-Objekt kann dann nicht ausgewertet werden (), da der JavaScript-Interpreter denkt, dass es sich eher um einen Block als um ein Objekt handelt. Dies trägt wesentlich zum Schutz vor diesen Angriffen bei. Es ist jedoch immer noch am besten, Ihre sicheren Daten mit nicht vorhersehbaren URLs zu schützen.
Ok, das ist also eine gute Regel für den Anfang: JSON-Objekte auf der obersten Ebene sollten immer Objekte sein und niemals Arrays, Zahlen oder Zeichenfolgen. Klingt für mich nach einer guten Regel.
Gibt es noch etwas zu tun oder zu vermeiden, wenn es um JSON- und AJAX-bezogene Sicherheit geht?
Der letzte Teil des obigen Zitats erwähnt unvorhersehbare URLs. Hat jemand mehr Informationen dazu, insbesondere wie Sie es in PHP machen? Ich bin in Java weitaus erfahrener als in PHP und in Java ist es einfach (da Sie eine ganze Reihe von URLs einem einzelnen Servlet zuordnen können), während alle PHPs, die ich durchgeführt habe, dem PHP-Skript eine einzige URL zugeordnet haben.
Wie genau verwenden Sie unvorhersehbare URLs, um die Sicherheit zu erhöhen?