在 Microsoft Access 2016 中转义特殊字符

问题描述

我正在为我工​​作的公司开展一个项目,设计一个数据库来跟踪和创建项目编号。我已经启动并运行了,但我的主管要求我包括用户输入清理以转义可能导致现有代码sql 出现问题的特殊字符。我有几个不同的用户输入表单,它们只是在表单关闭时输入到我的表格中的绑定文本框。我还有一个输入框,它会询问员工想要为其更新信息的项目编号。

据我了解,我们公司服务器上的本地 Access 数据库不会很容易发生 sql 注入,而且 MS Access 有一种我不太了解的处理注入的方法。但是,我正在寻找可能导致问题的字符列表、可能导致问题的位置以及处理它们的最佳方法

我尝试在表单上的文本框中输入一些我知道有问题的不同特殊字符,但 Access 只是将它们直接解析到记录中,没有错误。我确实编写了一个用两个撇号替换单个撇号的函数,该函数用于 InputBox

这是 InputBox 背后的代码

    Private Sub btnopenUpdate_Click()
Dim strInput$,safeInput$

strInput = InputBox("Enter the EP-Number for the project that you would like to update:","Update Project")
safeInput = safeEntry(strInput) 'change all single apostrophes to double apostrophes '

If Len(safeInput & vbNullString) > 0 Then
    If DCount("EPNumber","tblProjects","EPNumber = '" & safeInput & "'") > 0 Then
        DoCmd.OpenForm "frmUpdateProject","EPNumber = '" & safeInput & "'"
    Else
        MsgBox "Please enter a valid EP-Number.",vbinformation,"Error: Invalid EP-Number entered"
   End If
Else
    MsgBox "The field was left blank. Please enter a valid EP-number.","Error: Empty field"
End If

End Sub

这里是 safeEntry 函数背后的代码

Public Function safeEntry(strEntry)
    safeEntry = Replace(Nz(strEntry),"'","''")
End Function

对于我的情况有些冗长的总结表示歉意,但非常感谢任何帮助和输入,因为我对 MS Access 和 sql 的世界还很陌生,我正在尽最大努力学习如何保护数据库.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)