2013-06-21 70 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