首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP和/或Maxima对Maxima命令进行用户输入验证

使用PHP和/或Maxima对Maxima命令进行用户输入验证
EN

Stack Overflow用户
提问于 2016-04-22 13:02:55
回答 2查看 122关注 0票数 1

我让maxima运行在tomcat服务器上,使用php访问该服务器。

在我的网站上,用户能够执行maxima命令,这些命令使用php发送到我的tomcat服务器。

然而,这给我带来了确保用户提供的输入是安全的问题。例如,我想禁止使用危险的极大值函数,如writefile (以及许多其他函数)。

目前,我只是使用php验证输入,使用黑名单上的单词列表,我使用strpos检查这些单词的出现情况。显然,这根本不是安全的,因为用户只需输入'write' . 'file' . '()'而不是writefile(),就可以避免检查黑名单上的单词。

我怀疑PHP是否应该用来确保所提供的输入是安全的,所以我想知道是否有办法在我的tomcat服务器上黑名单maxima中的某些函数?

EN

回答 2

Stack Overflow用户

发布于 2016-04-22 14:02:02

海事组织,多层安全解决方案是你唯一的选择。

  1. 尽可能多地验证php用户输入。不要忘记限制允许的最大输入长度
  2. Maxima是开源的,所以您可以删除所有的“危险”命令。我的lisp知识有限,所以我不能说用户是否能够破解这个限制。
  3. 把你的猫关进监狱/虚拟机。
票数 2
EN

Stack Overflow用户

发布于 2016-04-22 16:53:27

我同意关于多层安全的看法,只有几个想法可以贡献。

这些最重要的步骤可能是最重要的:

  • 监狱/VM
  • 输入输出极限大小
  • 限制用于任何一种计算的内存和/或cpu时间

一旦涉及到前面的内容,这些内极大值步骤就不那么重要了:

  • 不允许:lisp输入
  • 不允许Lisp符号(即?foo)
  • 重新定义通常有副作用的函数(例如读取和写入文件的函数)而不做任何事情

我想如果你重新定义副作用函数,你就不用费心看黑名单了。用户可以调用writefile或其他什么,但没有任何效果。您可以在Maxima中重新定义内置函数,新定义优先于内置版本。注意,表示法foo([a]) := ...意味着a是所有参数(任意数量的参数)的列表,因此不需要考虑每个函数使用多少参数。

代码语言:javascript
复制
writefile ([a]) := false;

为了更好地衡量,您也可以删除内置的Lisp函数。

代码语言:javascript
复制
?fmakunbound (writefile);

参见FMAKUNBOUND中的普通Lisp超程序

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36794632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档