我在 tomcat 服务器上运行了 maxima ,我使用 php 进行访问。
在我的网站上,用户可以执行maxima命令,使用php发送到我的tomcat服务器。
但是,这使我无法确保用户提供的输入是安全的。例如,我想禁止使用危险的最大值函数,如writefile
(以及其他许多函数)。
目前我只是使用php验证输入,使用列入黑名单的单词,我使用strpos
检查其出现情况。显然这根本不安全,因为用户只需输入'write' . 'file' . '()'
而不是writefile()
,从而避免检查列入黑名单的单词。
我怀疑PHP是我应该用来确保提供的输入是安全的,所以我想知道是否有办法将我的tomcat服务器上的某些函数列入黑名单?
答案 0 :(得分:2)
IMO,多层安全解决方案是您唯一的选择。
尽可能多地验证php用户输入。不要忘记限制允许的最大输入长度
千里马是开源的,所以你可以扯掉所有危险的'命令。我的lisp知识有限,所以我不能说用户是否能够解决这个限制。
将您的tomcat放入jail / virtual machine。
答案 1 :(得分:2)
我同意很多关于多层安全性的奇怪问题,并且只有一些想法可以做出贡献。
这些千里之外的步骤可能是最重要的:
一旦覆盖了前面的内容,这些内部的Maxima步骤就不那么重要了:
:lisp
输入?foo
)我认为如果你重新定义副作用功能,你就不需要打扰黑名单了。用户可以拨打writefile
或其他任何内容但不起作用。您可以在Maxima中重新定义内置函数,并且新定义优先于内置版本。请注意,符号foo([a]) := ...
表示a
是所有参数的列表(任意数量的参数),因此您不需要考虑每个函数需要多少个参数。
writefile ([a]) := false;
为了更好地衡量,您也可以删除内置的Lisp函数。
?fmakunbound (writefile);