Seite 1 von 1

RPCs und Sicherheit

Verfasst: Montag 9. Januar 2006, 17:35
von tabellar
Im Pythonwiki wird das Thema Python und Sicherheit gerade angeschnitten.
Eval, exec und co sollte man ja "normalerweise" :roll: nicht verwenden. Ich
bin gerade an einer Anwendung dran, wo ich bisher eigentlich XML für RPCs
verwenden wollte, der Einfachheit her wegen und bestärkt durch einen Artikel
im IX, möchte ich jetzt aber JSON (JavaScript oriented Notation) verwenden.
Das ist ein ganz normales Dict als String, welches über das Netzwerk geschickt
wird. Mit der eval Funktion erweckt man das String-Dict wieder zum
Leben (fast schon ne Art Serilisation ...). Bevor man die Dict MESSAGE mit
eval wieder rücktransformiert, kann man natürlich den String auf "böse" Dinge
untersuchen. Kennt Ihr zu eval() eine Alternative :roll:???

Tabellar

Verfasst: Dienstag 10. Januar 2006, 00:40
von BlackJack
Wie wär's mit einem JSON Parser? Es gibt mehrere davon im Netz. Du solltest auch das Dictionary nicht einfach so mit ``str(dict_obj)`` erzeugen, weil JSON und Python Syntax nur ungefähr übereinstimmen. Zum Beispiel gibt's in JSON keine Zeichenketten in einfachen Anführungsstrichen, Python benutzt die aber standardmässig wenn in der Zeichenkette selbst kein einfacher Anführungsstrich vorkommt.

Auf der anderen Seite kommt `eval()` auch nicht mit jedem JSON Ausdruck zurecht. An Kommentaren verschluckt es sich zum Beispiel.

Verfasst: Dienstag 10. Januar 2006, 05:05
von mitsuhiko
Warum nicht ein XML draus erzeugen und mit Javascript wieder zerlegen? Ist zwar mehr Arbeit, aber garantiert sicher und auch von anderen Sprachen lesbar.

Verfasst: Dienstag 10. Januar 2006, 08:52
von jens
blackbird hat geschrieben:Warum nicht ein XML draus erzeugen und mit Javascript wieder zerlegen? Ist zwar mehr Arbeit, aber garantiert sicher und auch von anderen Sprachen lesbar.
Hattest du dir dafür nicht ein Framework geschrieben???

Verfasst: Dienstag 10. Januar 2006, 11:59
von tabellar
Mir ging's ja eben um XML oder JSON, nicht noch zusätzlich eine
Vermischung :D . Mein Nachrichtenformat, das ich verwenden möchte,
ist eine Mischung aus dem Jabber (XML) und RPC Protokoll. Ich brauch
im Moment nicht unbedingt die Standard Protokollformate. Obwohl ich den
schnellen PyRXP XML Parser von reportlab.org verwende, ist das ganze
mit JSON natürlich noch einfacher. Ein JSON Parser ist wahrscheinlich der
richtige Weg und wenn man dann sowas ähnliches wie eine DTD bei XML für
JSON zur Validierung verwendet, kann man dann doch eine gewisse Sicherheit
erreichen, oder?

Tabellar