2

Насколько безопасным я должен считать каркас 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 ответ1

1

В общем:

Все сводится к изощренности атакующего. Поиск ошибки (n годной к эксплуатации) всегда зависит от того, какие ресурсы были сожжены, чтобы найти ее (в сравнении с навыком оригинального программиста).

Скорее всего, вы получите ошибку на языке более низкого уровня, чем у более высокого уровня (в основном потому, что в случае более низкого уровня имеется больше строк, чтобы найти ошибку); плюс, скорее всего, найдется ошибка в доморощенном программном обеспечении, а не в виртуальной машине основного языка, такой как Go, Java и т. д.

Чтобы быть конкретным:

Несмотря на то, что Go еще молодой язык, он активно поддерживается относительно небольшим сообществом квалифицированных специалистов.

Так что я не ожидал бы таких зияющих дыр, как bind, sendmail, openssl или bash.

В любом случае, если бы я был на вашем месте, я бы не запустил сервер без надлежащих мер предосторожности (отдельный uid/gid, chroot, ulimits, ограниченная группа, усиленный дистрибутив), независимо от того, на каком языке он написан.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .