【问题标题】:Execute client command in safe interpreter在安全解释器中执行客户端命令
【发布时间】:2018-09-11 04:58:31
【问题描述】:

我正在尝试编写一个程序,用户可以通过客户端的 comm::comm 命令读取服务器上的数据库。现在我想阻止来自客户端的某些命令,例如“文件删除”,所以我在服务器上创建了一个安全解释器,并希望在服务器上进行一些设置,以将所有命令从客户端放到安全解释器。有谁知道是否有任何机制可以实现这一目标?任何有用的答案将不胜感激!

【问题讨论】:

  • 到目前为止你有没有尝试过?
  • 我尝试在客户端重写 comm 命令以在服务器上的安全解释器中执行功能,但是这个限制应该在服务器端。

标签: tcl comm


【解决方案1】:

请参阅comm 包的文档,尤其是有关eval 事件挂钩的部分。

https://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/comm/comm.html#subsection9

例如这样:

% interp create foo
% ::comm::comm hook eval {return [lb]foo eval $buffer[rb]}
% ::comm::comm send [lb]::comm::comm self[rb] set myvar 123
123
% set myvar
can't read "myvar": no such variable
% foo eval set myvar
123

【讨论】:

  • 谢谢!这正是我想要的!
  • 如果您对答案满意,请随时接受。
猜你喜欢
  • 1970-01-01
  • 2013-02-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 2021-08-08
  • 2013-03-15
  • 2021-09-04
  • 1970-01-01
相关资源
最近更新 更多