Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 使用InputBox和简单字符串比较在VBA中计算密码_String_Security_Vba_Excel - Fatal编程技术网

String 使用InputBox和简单字符串比较在VBA中计算密码

String 使用InputBox和简单字符串比较在VBA中计算密码,string,security,vba,excel,String,Security,Vba,Excel,我想保护未经授权的用户不运行我的VBA Excel宏。当在InputBox中键入错误的文本时,下面的代码将退出sub。下面的测试可以被覆盖吗?我记得这种简单的密码保护在C++的情况下是不安全的,我尝试通过键入字符串来测试下面的代码:“”“=”“”或“< /代码>,我认为它将被评估为”“=”或“=”“abc”。哪个值是TRUE,但它失败了。我知道下面的sub可以改进,可以使用StrComp而不是=比较(和其他方法),但我想首先知道VBA如何在下面的情况下计算字符串的比较。我正在使用Excel 20

我想保护未经授权的用户不运行我的VBA Excel宏。当在
InputBox
中键入错误的文本时,下面的代码将退出sub。下面的测试可以被覆盖吗?我记得这种简单的密码保护在C++的情况下是不安全的,我尝试通过键入字符串来测试下面的代码:“<代码>”“=”“”或“< /代码>,我认为它将被评估为<代码>”“=”或“=”“abc”。哪个值是
TRUE
,但它失败了。我知道下面的sub可以改进,可以使用
StrComp
而不是
=
比较(和其他方法),但我想首先知道
VBA
如何在下面的情况下计算字符串的比较。我正在使用Excel 2003

Sub macro_test_abc()
    Dim textinput As String, Message As String, Title As String, Default1 As String

    Message = "Input password"
    Title = "Test_abc"
    Default1 = "***"
    textinput  = "abc"

    If InputBox(Message, Title, Default1) = textinput Then
        MsgBox "OK"
    Else
        MsgBox "WRONG!"
        Exit Sub
    End If
End Sub

我尝试了
abc
,它可以工作(excel 2007)…您是否尝试了带引号的
“abc”
?这不会工作。据我所知,无法保证用户不会访问excel 2003中编写的VBA代码…也就是说,excel 2003的VBA项目密码很容易被破解。“保证用户不会访问excel 2003中编写的VBA代码"您可以考虑创建一个.dll来提供额外的保护。@ PurLand Runter第二个,只要问题范围不限于<代码> VBA < /代码>选项。在另一个注释中,我认为<代码> SQL注入< /代码>标签是不相关的。最好的事情之一是过滤所有传递给输入框的字符。你做你的=检查以删除任何不是字母/数字的东西。这将阻止任何类似于你所描述的事情。我也同意,excel中的宏在缺少DLL的情况下是很难保护的。