Похоже, что ваша озабоченность действительна, о чем свидетельствует тот факт, что ADO.NET имеет набор Connection String Builder классов (хотя правильнее называть это «внедрение строки соединения» против »SQL-инъекция ", поскольку SQL не задействован).Поскольку вы не используете .NET, следующий лучший вариант - очистка ввода и экранирование специальных символов. Ссылка MSDN в синтаксисе строки подключения OLEDB гласит:
Чтобы включить значения, содержащие точку с запятой, символ одинарной кавычки или символ двойной кавычки, значение должно быть заключенов двойных кавычках.
и
Если значение содержит как одинарные, так и двойные кавычки, символ кавычки, используемый для включения значения, должен каждый раз дублироватьсяэто происходит в пределах значения.
Это VBScript, который я собрал, который пытается реализовать два приведенных выше правила:
Option Explicit
Dim pw, connStr, conn
pw = InputBox("Enter password")
' Sanitize double quotes in the input string
pw = Replace(pw, Chr(34), Chr(34) & Chr(34))
' Notice how pw is surrounded by double quote characters
connStr = "Provider=SQLOLEDB;Data Source=.\SQLEXPRESS;User ID=test_user;Password=" & Chr(34) & pw & Chr(34)
' Test the connection. We'll get a runtime error if it didn't work
Set conn = CreateObject("ADODB.Connection")
conn.Open connStr
conn.Close
WScript.Echo "OK!"
Если мой пароль был app"le'\
, соединениестрока будет иметь вид:
Provider=SQLOLEDB;Data Source=.\SQLEXPRESS;User ID=test_user;Password="app""le'\"
Однако это не работает для всех возможных входов.Например, тестовый скрипт выдает ошибку, когда пароль содержит двойную кавычку перед точкой с запятой.Может быть, я неправильно интерпретирую рекомендации.Я не уверен, но, надеюсь, это, по крайней мере, поможет вам начать.