将在MYSQL数据库中将ASP Classic代码存储为字符串的可能性
P粉557957970
P粉557957970 2024-04-06 13:38:43
0
1
456

是否可以将 asp 经典代码存储到 MySQL 数据库中并让它在拉取时执行代码?例如将变量名存储到字符串中并让它在显示之前执行ASP?我怀疑这是不可能的,因为 MySQL 请求在页面加载后运行,因此返回数据不会被执行,而只是变量名称。另一件事是它可能是 HTML 编码,在将其传递到 MySQL 服务器后可能对其进行编码,但到目前为止它只是读取变量名称。对此的任何想法,这是不可能的,还是我以某种方式取消编码:

我尝试过使用像这样的编码方法,使用在其他地方工作的 Chr 替换函数,但该函数的使用是这样的:

NEWSTRING =  Server.HtmlEncode(OLDSTRING)

无论是否尝试编码,结果都只会显示 ASP Classic 代码,如下所示:

MESSAGE TO USER <%=Session("var_FOO")%>

虽然Encode似乎没有改变屏幕上显示的字符串,但日志结果显示了编码尝试,它没有将数据放入,而是像这样转换字符类型:

&quot;var_Foo&quot;

我可能用编码找错了树,但如果你有锤子,你可以尝试敲击一些螺丝,直到它们进入。


这个功能目前对我来说很困难,因为一种更简单的方法是像我一样将字符串存储在数据库中,然后在拉出字符串后将变量添加到字符串中,而不是放入它们进入数据库。当然,这意味着用户无法通过与其关联的变量来控制错误消息,但我想我可以接受这一点。

类似的问题提出将其作为函数来执行此操作,如果您阅读帖子的其余部分,您会发现存在差异。

P粉557957970
P粉557957970

全部回复(1)
P粉893457026

是的,这是可能的。经典 ASP 提供 Eval、Execute 和 ExecuteGlobal 方法,您可以向这些方法传递包含源代码的文本字符串。

在面向公众的网站上这样做是危险的;如果网络蠕虫知道如何将任意代码写入您的数据库表,他就可以破坏、破坏或劫持您的应用程序。你并不偏执:积极主动的陌生人实际上正在密谋反对你,并寻找以这种方式运作的网站。小心点。

Eval(codeText) 运行表达式并返回结果。 ExecuteGlobal(codeText) 运行它,就好像它在顶级上下文中一样。 Execute(codeText) 在调用它的上下文(子例程或函数)中运行它。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!