2016-11-25 1 views
2

seit meiner letzten Frage in SO habe ich ein wenig darüber gelesen, wie sql Injektion zu verhindern und viele Leute erwähnt aktive Datensätze Klasse. aber wenn ich es googeln, es existiert nur in codeigniter 2.coderigniter Abfrage-Generator und aktiver Datensatz sql Injektion

so meine Fragen sind:

  1. ist Query Builder-Klasse in codeigniter 3 die aktualisierte Version von Active Record-Klasse oder haben sie unterschiedlichen Zwecken dienen?

  2. ist es genug (im Allgemeinen), Query Builder Class-Methoden wie $this->where('field', $foo); anstelle von $this->where("field = '$foo'"); zu verwenden, um sql injection zu verhindern?

P.S. Ich benutze codeigniter 3 und mysql

+1

Werfen Sie einen Blick auf: http://stackoverflow.com/questions/1615792/does-codeigniter-automatically-prevent-sql-injection –

+0

ich ja Ich habe diese Frage gelesen, bevor ich gefragt habe. Diese Frage beantwortet keine meiner Fragen hier. und da gibt es zu viele verschiedene Meinungen, um etwas zu sagen. – dapidmini

Antwort

1

1- ActiveRecord war in Codeigniter 2, aber in Codeigniter 3 haben Sie stattdessen QueryBuilder. Die beiden Klassen funktionieren für Sie, vielleicht ist QueryBuilder eine verbesserte Version von ActiveRecord. In anderen Frameworks wie Yii2 ist ActiveRecord ein ORM, nicht nur ein Abfragezeichenfolgengenerator, sondern in CI ein einfacher Abfragegenerator.

2 - Codeigniter wird automatisch alle übergebenen Parameter verlassen, aber ich schlage vor, dass Sie Ihre Eingaben validieren, bevor Sie Abfragen ausführen. Beispielsweise sollte der Wert eines numerischen ID-Felds eine Zahl und keine Zeichenfolge sein, sodass die Regel der ID-Eingabe INTEGER sein sollte. Sie können die Validierung in Codeigniter 3 in der amtlichen Dokumentation: https://www.codeigniter.com/userguide3/libraries/form_validation.html

Alle Arbeiten, die Sie tun sollten, übergeben Sie Ihren Feldwert als Funktionsparameter, nicht als Zeichenfolge (Feld und Wert zusammen). Wenn Sie Ihre Abfrage ohne QueryBuilder ausführen möchten, müssen Sie Ihre Parameter manuell entschlüsseln. Sie können mehr Informationen über sie in Codeigniter Dokumentation erhalten:

https://www.codeigniter.com/userguide3/database/queries.html#escaping-queries

Verwandte Themen