我们的服务器应用程序正在使用通过Java <properties>
<hudson.security.AuthorizationMatrixProperty>
<blocksInheritance>true</blocksInheritance>
</hudson.security.AuthorizationMatrixProperty>
</properties>
方法启动的WKHTMLTOPDF
进程生成PDF文件。
此过程的命令行是根据HTTP请求的参数生成的。
由于无法确保请求有效,我们应该通过这种方法了解任何与安全相关的问题吗?
答案 0 :(得分:2)
您应该查看沙盒生成的过程。例如,使用jail或容器,如Docker。这样,如果攻击者找到了进行某种参数注入的方法,那么至少损坏包含在您允许沙箱执行的操作中。通常,请阅读running untrusted processes。
例如,可以在服务器上执行任何命令吗?
是的,您应该在假设下工作,这是可能的。因此,沙盒的过程。
答案 1 :(得分:1)
为确保没有安全问题,请考虑以下几点:
同样,安全性是一个主观问题,取决于管理员/架构师在设计和部署应用程序时的谨慎程度。此外,如果可能的话,可能会在Docker或类似的容器中容纳您的应用程序
答案 2 :(得分:0)
所有输入都应被视为潜在恶意,建议进行输入验证。
ProcessBuilder相对安全,但如果用户可以控制所有参数,如
ProcessBuilder pb = new ProcessBuilder(userInput[0], userInput[1], userInput[2]);
然后用户可以注入任何命令,这显然很危险。
如果你控制第一个参数,比如
ProcessBuilder pb = new ProcessBuilder("hardCodedCommand", userInput[0], userInput[1]);
这将是安全的。但是我仍然强烈建议验证用户输入。如果参数应为数字或仅包含字母数字字符的字符串,请检查此项并在不是这种情况时失败。