我已经接手支持时间和费用输入系统。 Apache 的 CGI。 CGI 程序是用 bash 编写的 :) 我将向其中添加一些功能并将其公开给更多的用户,但在此之前我想先了解一下还需要注意什么 在安全性、漏洞、CGI 陷阱等方面。
用户不多,但该应用程序性能非常好,并且始终如一地大量使用 bash 编写。页面看起来像大量使用此处文档的 ASP/JSP/PHP 格式。参数是从单独的 C 程序推断出来的, session 信息存储在数据库 (MySQL) 中,SQL 参数/注入(inject)被正确转义。
我很纠结,好像这个堆栈真的需要被剥离吗? 在大部分直接用 bash 编写的整个应用程序中需要注意什么?
最佳答案
像一个知道系统中所有代码的恶意用户一样思考(代码中的模糊性是没有防御的!-):你将如何破坏系统?
您能否向其提供恶意 header 、URL 或查询参数,以便您的恶意注入(inject)文本最终被系统吞噬并用于攻击文件系统、数据库等? SQL 注入(inject)是一种攻击途径,但可能还有其他途径,除非系统真的偏执地处理它从用户那里收到的一切——不要使用它(没有非常仔细地检查和清理!)来形成文件名、系统命令和依此类推,不存储它供以后执行,等等。
它并没有真正特定于 bash 或特定于 cgi 的东西 —— 只是你需要确保安全的常见或花园形式的偏执狂(甚至没有像 perl 的“污点”概念这样的拐杖 —— 这并不能完全解决问题一切[[当然远非如此]],但它确实为您节省了一些努力;-)。
关于linux - Apache-CGI-Bash 应用程序中的安全性或其他陷阱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1671504/