2008-09-15 6 views
3

Ich habe eine große legacy Coldfusion App geerbt. Es gibt Hunderte von <cfquery> einige SQL hier # Variable # </cfquery > Aussagen, die entlang der Linien von parametriert werden müssen: <cfquery> einige sql hier < cfqueryparam value = "# Variable #"/> </cfquery >Wie kann ich Coldfusion cfquery Parameter programmatisch sanieren?

Wie kann ich mich über die Parametrierung programmatisch hinzufügen?

Ich habe darüber nachgedacht, einige reguläre Ausdrücke oder sed/awk'y Art von Lösung zu schreiben, aber es scheint irgendwo wie jemand hat ein solches Problem in Angriff genommen. Bonuspunkte, die vergeben werden, um den SQL-Typ automatisch abzuleiten.

+0

Ich hatte noch keine Gelegenheit, http://qpscanner.riaforge.org/ oder http://www.webapper.net/index.cfm/2008/7/22/ColdFusion-SQL-Injection zu überprüfen. Aber wenn einer von diesen beiden genügend Upvotes bekommen kann, werde ich das vielleicht nicht tun müssen, und ich kann diese Antwort einfach akzeptieren. –

Antwort

10

Es gibt einen queryparam Scanner, die sie für Sie auf RIAForge finden: http://qpscanner.riaforge.org/

+0

Hinweis: Version 0.8 von QueryParam Scanner fügt die Möglichkeit hinzu, Parameter automatisch zu reparieren, aber derzeit findet sie sie nur. –

6

Es ist ein Skript hier verwiesen: http://www.webapper.net/index.cfm/2008/7/22/ColdFusion-SQL-Injection, die für Sie die Mehrheit der schweren Heben tun wird. Sie müssen lediglich die Abfragen überprüfen und sicherstellen, dass die Syntax ordnungsgemäß analysiert wird.

Es gibt keine Entschuldigung dafür, CFQueryParam nicht zu verwenden. Abgesehen davon, dass es viel sicherer ist, ist es eine Leistungssteigerung und der beste Weg, um die Werte in zeichenbasierten Spaltentypen zu behandeln.

+0

Dieses Skript ist jetzt auf Github für die Menschen zu greifen und zu tragen. https://github.com/mhenke/WebApper-ColdFusion-SQL-Injection –

1
<cf_inputFilter 
      scopes = "FORM,COOKIE,URL" 
      chars = "<,>,!,&,|,%,=,(,),',{,}" 
      tags="script,embed,applet,object,HTML"> 

Wir haben dies verwendet, um einem kürzlich erfolgten SQL-Injection-Angriff entgegenzuwirken. Wir haben es der Datei Application.cfm für unsere Site hinzugefügt.

0

Ich bezweifle, dass es eine Lösung gibt, die genau Ihre Bedürfnisse passen. Die einzige Option, die ich sehe, ist Ihre eigene rekursive Suche zu schreiben, die einen Bericht für Sie erstellt oder eine der oben aufgelisteten Apps/Skripte verwendet. Grundsätzlich müssen Sie jede Seite bearbeiten oder alle automatisierten Änderungen genehmigen.

3

Denken Sie daran, dass Sie möglicherweise nicht alles mit <cfqueryparam> lösen können.

Ich habe eine Reihe von Beispielen gesehen, bei denen die Reihenfolge nach Feldname in der Abfragezeichenfolge übergeben wird, was ein etwas komplizierteres Problem zu lösen ist, da Sie dies "manuell" validieren müssen.

Verwandte Themen