基于 go lang 的 HTTP 服务器有多安全?

基于 go lang 的 HTTP 服务器有多安全?

我应该认为 go lang net/http 框架有多安全?

我明白这是一个多么广泛的问题,但我想知道我应该如何考虑框架本身,而不是在它之上构建的应用程序。

如果我要构建以下示例代码并在开放至互联网的端口上运行它,我需要担心服务器受到损害吗?

package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

答案1

一般来说:

这一切都取决于攻击者的熟练程度。找到一个(可利用的)漏洞总是需要耗费大量资源(相对于原始程序员的技能而言)。

与高级语言相比,在低级语言中更容易发现 bug(主要是因为在低级语言中,有更多行可以查找 bug);此外,在自主开发的软件中发现 bug 的可能性比在 Go、Java 等主流语言 VM 中更大。

再具体一点:

尽管 Go 仍然是一种年轻的语言,但它由相对较小的熟练专业人员社区积极维护。

所以我不会期望像 bind、sendmail、openssl 或 bash 这样存在巨大漏洞。

无论如何,如果我是你,我不会在没有适当预防措施(单独的 uid/gid、chroot、ulimits、有限的 cgroup、强化发行版)的情况下运行服务器,无论它是用什么语言编写的。

相关内容