2013-06-21 106 views
0

我需要修復我們分配給維護的非IT應用程序中的一些安全問題。它在Microsoft Access前端(SQL Server後端)。Microsoft Access SQL注入

有誰知道SQL注入是否可以通過Microsoft Access控件的RecordSource或RowSource屬性來完成?例如,如果設置了一個列表框的記錄源到

Me.SomeListBox.Recordsource = 'SELECT * FROM SomeTable WHERE SomeField = ''' & Me.txtSomeTextBox & '''.

我不知道,如果微軟已經建立預防或沒有這些屬性,所以我想知道如果我要運行Me.txtSomeTextBox通過一個清潔功能。

這當然是一個快速修復...應用程序將在今年晚些時候重新設計並遷移出Access(yay!)。

在此先感謝你們!

+0

我的建議:在此之前拖動你的腳,直到Access前端退役的年份晚些時候(「yay!」)並且問題自行消失。 –

+0

它很脆弱,將'''放到txtSomeTextBox中,看看會發生什麼 –

+0

Gord,即使它的一次性工作他們仍然希望完成它,所以我可以用它來更快地將它從Access中移出來,而不是浪費掉:-(。希望我可以在這裏使用每個人的技巧來減少痛苦 – StoneJedi

回答

1

如果你正在做字符串連接,你很脆弱。

+0

你是對的我們最終試圖通過在黑名單中運行任何用戶文本以及創建參數化的sprocs來最小化可能性。這是比我希望考慮的是一次性工作更多的工作,但至少sprocs被設計爲可重用的重新設計應用程序:-) – StoneJedi

2

可以使用VBA消除WHERE條件中明顯使用的字段名稱。

Sub btnLogin_OnClick() 

If instr(0, me.txtBox, someFieldName) > 0 Then 
     Msgbox("Foo Bar!") 
Else 
    Login 
End If 

End Sub