繁体   English   中英

使用Golang安全执行命令(避免远程执行)

[英]Safely execute command (avoid remote execution) with Golang

我有一个小的应用程序,它通过执行一个过程并为它提供用户提供的查询字符串中的一些输入来处理http请求。 我想知道什么是针对远程执行过滤输入的最佳方法。 例如,PHP替代方案将类似于: http : //php.net/manual/en/function.escapeshellarg.php

现在,输入应该是有效的URL(如果可以简化的话),但理想情况下最好使用通用过滤器。

通常,像这样的魔术函数很难正确使用,并且如果您严重依赖它们,它们通常会使应用程序容易受到攻击。

我建议您使用智能的URL /请求方案来获取运行所需的命令,并在用户请求和Shell执行之间进行某种程度的解释,以便不直接使用用户给出的参数。

您可以获取包含?verbose=true请求,然后在命令行上将其转换为-v 在处理需要直接给正在运行的命令的字符串之类的用户输入时,您需要使用引号进行简单的转义(通过简单的检查以查看输入是否包含引号),以确保您不会遇到“ Bobby”表”问题。

一种替代方法是让您的程序和基础命令通过管道或文件(例如)交换数据。 这将降低离开命令输入开放攻击向量的可能性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM