httprequestsから直接変数を取得する約2000の異なる手作りのSQL文字列を備えた古いWebサイトを継承しました。このサイトは、SQLインジェクション攻撃によって定期的に侵害されています。明らかに、このサイトはこのセキュリティの悪夢を回避するためにSQLパラメータを使用してコーディングされている必要がありますが、これらの変更に伴う作業負荷のため、着信要求を「クリーンアップ」する別の方法を探しています。
メインクリーン機能:-
Public Function myRequest(ByRef Request As HttpRequest, ByVal param As String) As String
Return CleanRequest(Request(param))
End Function
Public Function CleanRequest(ByVal requestString As String) As String
Dim badChars() As String = {"select", "drop", ";", "--", "insert", "delete", "xp_", "update"}
Dim newChars As String = requestString
For i = 0 To UBound(badChars)
newChars = Replace(newChars, badChars(i), "", 1, -1, vbTextCompare)
Next
CleanRequest = Replace(newChars, "'", "''")
End Function
そのように呼ばれる:-
Dim details As DataSet
detailsSQL = "select * from mytable where tableid = '" & myRequest(Request, "tableid") & "'"
details = sql.sqlSelect(detailsSQL)
コードは構造化されており、簡単に見つけて置き換えることができるように名前が付けられていることに注意してください。このコードを使用すると、サイトは引き続き定期的に侵害されます。これらのインジェクション攻撃を阻止するのに役立つメインの「クリーン」機能への追加を誰かが推奨できますか?