Django, wie Validierung der POST-Parameter
Passiere ich einige Parameter zu django durch eine POST-Anfrage. Wie kann ich überprüfen, ob ein parameter ist ein integer, ein String, und auch, dass es keine unsicheren Sachen wie code-injection-innen?
Gibt es eine django-Funktion, die ich nutzen kann?
Beispiel:
if request.method == 'POST':
print request.POST.get('user_comment')
Wie kann ich überprüfen, ob die POST-parameter enthält eine nicht gefährliche String für mein system? So etwas wie
request.POST.get('user_comment').is_valid()
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zur überprüfung, ob
POST
Daten sicher sind, die richtige Art etc Sie können Formulare in django. Zum Beispiel, wenn Sie erwarten sind 3 Parameter erforderlich, einem string und 2 ganze zahlen, können Sie Formular erstellen:Und deren Verwendung in der Ansicht:
Zur Filterung, wenn string nicht enthalten, etwas gefährlich, es gibt keine Allgemeine Lösung. Es gibt verschiedene Bedrohungen für Datenbanken, XSS etc, so dass es keine Möglichkeit gibt, um es zu filtern alle.
extra
Wenn Sie mit Django REST Framework, dann können Sie etwas wie das folgende in Ihrem Blick.
Wenn Sie nicht mit der DRF zu tun haben, einen Blick auf serializers.py zu sehen, wie
is_valid()
umgesetzt wird. Im Grunde ruft esrun_validators()
Funktion django.db.Modelle.Felder. Hoffe, das hilft!Kann man sich überlegen, cleaned_, bevor Ihr Feld zu setzen Validierungen auf.
Zum Beispiel, wenn Sie wollen, überprüfen Sie Benutzernamen und u haben ein Modell definiert, wie es,
dann für die gleiche, die Sie haben eine form, wie unter
Dies ist pro die django-Dokumentation, die sagt:
"Clean () - Methode auf ein Feld Unterklasse ist verantwortlich für den Betrieb to_python(), validate(), und run_validators() in der richtigen Reihenfolge und der Propagierung Ihrer Fehler. Wenn, zu irgendeinem Zeitpunkt eine der Methoden raise ValidationError, die Validierung beendet ist und dass Fehler ausgelöst. Diese Methode gibt die Daten bereinigen, die wird dann eingefügt in die cleaned_data Wörterbuch der form.
Den clean_ () - Methode aufgerufen, die ein Formular Unterklasse – wo ist ersetzt durch den Namen des Formularfeldes Attribut. Diese Methode ist die Reinigung, die spezifisch für das jeweilige Attribut, unabhängig von der Art von Feld es ist. Diese Methode wird nicht übergeben beliebige Parameter. Benötigen Sie zum nachschlagen der Wert des Feldes selbst.cleaned_data und denken Sie daran, dass es ein Python-Objekt an dieser Stelle nicht die ursprüngliche Zeichenfolge in der vorgelegten form (es wird im cleaned_data, weil der Allgemeine Bereich clean () - Methode, die oben, bereits gereinigt, noch einmal die Daten)."
der einfachste Weg ist das erstellen eines Formulars:
dann
oder Sie wollen es tun, ohne ein Formular?
Bezug auf code-Injektion, die Sie verwenden können, bleach zur Bereinigung von Benutzereingaben:
Finden Sie weitere Informationen über Sicherheit auf der offiziellen Django-Dokumentation: