2008-09-11 10 views
4

Ich bin hier ein bisschen verwirrt. Soweit ich sagen kann, ist Microsoft der Meinung, dass die Parametrisierung der beste Weg ist, um Ihre Datenbank vor SQL-Injection-Angriffen zu schützen. Aber ich finde zwei widersprüchliche Informationsquellen hier:Parametrisierung in VBScript/ASP Classic und ADO

This page sagt, das ADO-Befehlsobjekt zu verwenden. Aber this page sagt, dass das Befehlsobjekt nicht sicher für das Scripting ist. Ich erinnere mich, irgendwo gelesen zu haben, dass das Befehlsobjekt wegen Sicherheitslücken nicht in VBScript oder JScript verwendet werden sollte, aber ich kann diesen Artikel nicht finden.

Fehle ich hier etwas oder scheinen sich diese beiden Artikel zu widersprechen?

Antwort

4

Ich könnte hier falsch liegen, aber ich denke, das bedeutet nur, dass jemand das Command-Objekt verwenden könnte, um schlimme Dinge zu tun. I.e. Es ist nicht vertrauenswürdig, wenn jemand anderes es scriptet.

Siehe safe for scripting in diesem Artikel. Jede Instanz, die online über diese Phrase spricht, verweist darauf, als ob Sie ein ActiveX-Steuerelement mit der Aussage "Dieses Steuerelement führt keine E/A oder nur den Server zurück, von dem es kam" referenziert, aber das Command-Objekt tut dies nicht. Es kann verwendet werden, um viele Dinge zu tun, die unsicher sein könnten.

Der "Safe", über den sie sprechen, und der "Safe", der die SQL-Injektion verhindert, sind zwei verschiedene Dinge. Der Artikel über die Verwendung des ADO Command-Objekts zur Parametrisierung Ihrer Daten ist genau richtig. Du solltest das tun.

Und Microsoft bestätigt weiterhin hier um den:

http://msdn.microsoft.com/en-us/library/ms676585(v=VS.85).aspx

1

Ich denke, „sicher für Skripting“ bedeutet „sicher von einer Webseite wir gerade von einem nigerianischen Prinzen abgerufen werden laufen“. Das Befehlsobjekt sollte auf dem Server sicher ausgeführt werden können.

Bei der Arbeit, damals, als meine Kollegen ihr nicht vertrauten, hatten wir ein internes Framework, das im Grunde dasselbe tat.