相关疑难解决方法(0)

避免 MS Access 中的 SQL 注入

我试图更好地理解参数化 sql 作为 SQL 注入的解决方案。

可以说我有一个tblCustomer字段CustName,PhoneAddress。还可以说我有一个供新客户输入数据的输入表单,其中的控件名为txtNametxtPhonetxtAddress

可以运行以下 vba 代码:

dim strName, strPhone strAddress, strSQL as string
strName = me.txtName
strPhone = me.txtPhone
strAddress = me.txtAddress
strSQL = "INSERT INTO tblCustomer (CustName, Phone, Address) _
VALUES (" & strName & ", " & strPhone & ", " & strAddress & ");"

DoCmd.RunSQL strSQL
Run Code Online (Sandbox Code Playgroud)

但是如果有人指定地址“Robert'); DROP TABLE tblCustomer; --”(眨眼)我就会遇到一些严重的问题。

我使用过 vba 参数,但它们对我没有帮助。那么,当人们说使用参数来解决问题时,他们的意思什么?

sql ms-access vba

2
推荐指数
1
解决办法
3837
查看次数

尝试将变量用作值vba到sql

Dim connection As New adodb.connection        
Dim sql As String
Dim years As Integer
years = 2011
Run Code Online (Sandbox Code Playgroud)

所以我在这里有一些很好的声明变量.现在我要展示完美无缺的说法:

sql = "insert into crimeData(reportYear) values(2011)"
connection.Execute sql
Run Code Online (Sandbox Code Playgroud)

注意我今年硬编码.现在,如果我尝试:

sql = "insert into crimeData(reportYear) values(years)"
connection.Execute sql
Run Code Online (Sandbox Code Playgroud)

将变量名替换为值,我得到错误: No value given for one or more required parameters

不可否认,我假设必须有一个简单的语法问题,或者一些我缺少变量的meta.请赐教.我怎样才能在这里正确地交换变量(所以我可以以编程方式使用它,而不是在值中进行硬编码)

excel ms-access vba excel-vba access-vba

1
推荐指数
1
解决办法
1440
查看次数

标签 统计

ms-access ×2

vba ×2

access-vba ×1

excel ×1

excel-vba ×1

sql ×1