Как замаскировать код макроса Excel - PullRequest
6 голосов
/ 05 марта 2012

У меня ниже хранится в макросе Excel: -

Sub Sales()

Dim StrSQl As String

Con = "Provider=IBMDA400;Data Source=192.168.2.2;User Id=boss;Password=1we56"

Set Db = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.recordset")
Db.connectionSTring = Con
Db.Open
StrSQl = "select myuc, sum (myac) as Amount from myabc.myqwerty where mydt >= 20100101 and mydt <= 20100831 group by (mycl)"
rs.Open StrSQl, Db, 3, 3
Sheet1.Cells(10, 1).CopyFromRecordset rs
rs.Close
Set rs = Nothing
Set cn = Nothing
End Sub

Я хочу замаскировать выше идентификатор пользователя и пароль, т.е.User Id=****;Password=***** как часть безопасности.

Возможно ли это?

Ответы [ 2 ]

11 голосов
/ 05 марта 2012

Самым безопасным вариантом - независимо от того, нужно ли пользователю вводить пароль или нет - является защита всего макрокода

  • Вход в редактор Visual Basic (VBE)
  • выберите проект, который вы хотите защитить, в окне Project Explorer
  • Правильно кликни тогда .... VBAProject Properties
  • Перейдите на вкладку Защита, затем установите флажок «Заблокировать проект от просмотра» и подтвердите свой пароль.
  • Сохраните книгу, закройте и снова откройте ее, чтобы установить защиту

За исключением написания COM надстройки, это безопасно, так как ваш код получит. Имейте в виду, что есть продукты, которые будут взломать код VBA

enter image description here

2 голосов
/ 17 августа 2012
Con = "Provider=IBMDA400;Data Source=192.168.2.2;User Id=boss;Password=1we56"

AARRGGHH !! О чем ты думаешь?

Вот сделка. Никакое шифрование не поможет вам в этом, потому что, если Excel сам может расшифровать данные (и может, иначе соединение никогда не установится), это может сделать и злонамеренный тип.

Правильный способ сделать это - запросить у пользователя идентификатор пользователя и пароль и использовать эту информацию для динамического построения строки подключения.

Таким образом, конфиденциальная информация существует только в голове пользователя и (временно) на машине, которую они используют (которая, вероятно, в любом случае является их машиной). Это не находится где-то в таблице Excel, к которой может обратиться каждый.

И, кроме того, функциональные идентификаторы (общие для разных пользователей) почти всегда являются плохой идеей, поскольку аудит превращает их в кошмар.

...