是否可以将 asp 经典代码存储到 MySQL 数据库中并让它在拉取时执行代码?例如将变量名存储到字符串中并让它在显示之前执行ASP?我怀疑这是不可能的,因为 MySQL 请求在页面加载后运行,因此返回数据不会被执行,而只是变量名称。另一件事是它可能是 HTML 编码,在将其传递到 MySQL 服务器后可能对其进行编码,但到目前为止它只是读取变量名称。对此的任何想法,这是不可能的,还是我以某种方式取消编码:
我尝试过使用像这样的编码方法,使用在其他地方工作的 Chr 替换函数,但该函数的使用是这样的:
NEWSTRING = Server.HtmlEncode(OLDSTRING)
无论是否尝试编码,结果都只会显示 ASP Classic 代码,如下所示:
MESSAGE TO USER <%=Session("var_FOO")%>
虽然Encode似乎没有改变屏幕上显示的字符串,但日志结果显示了编码尝试,它没有将数据放入,而是像这样转换字符类型:
"var_Foo"
我可能用编码找错了树,但如果你有锤子,你可以尝试敲击一些螺丝,直到它们进入。
这个功能目前对我来说很困难,因为一种更简单的方法是像我一样将字符串存储在数据库中,然后在拉出字符串后将变量添加到字符串中,而不是放入它们进入数据库。当然,这意味着用户无法通过与其关联的变量来控制错误消息,但我想我可以接受这一点。
类似的问题提出将其作为函数来执行此操作,如果您阅读帖子的其余部分,您会发现存在差异。
是的,这是可能的。经典 ASP 提供 Eval、Execute 和 ExecuteGlobal 方法,您可以向这些方法传递包含源代码的文本字符串。
在面向公众的网站上这样做是危险的;如果网络蠕虫知道如何将任意代码写入您的数据库表,他就可以破坏、破坏或劫持您的应用程序。你并不偏执:积极主动的陌生人实际上正在密谋反对你,并寻找以这种方式运作的网站。小心点。
Eval(codeText) 运行表达式并返回结果。 ExecuteGlobal(codeText) 运行它,就好像它在顶级上下文中一样。 Execute(codeText) 在调用它的上下文(子例程或函数)中运行它。