Jump to content

xzolsu

Administrators
  • Content Count

    189
  • Joined

  • Last visited

  • Days Won

    10

xzolsu last won the day on May 29

xzolsu had the most liked content!

Community Reputation

90 Excellent

Recent Profile Visitors

198 profile views
  1. Прочёл книгу "Хакеры", от "Этногинез" и лично моё мнение: - Довольно зачётный экзепляр, который приятно читать и многое захватывает из реальности, а может и полностью, сложно сказать, в последнее время со мной происходят мистические вещи, которые никак не обьяснить.
  2. Битрикс, в своей жизни я с ним сталкивался много раз. И вот что могу сказать по нему, одной картинкой:
  3. Зарегился. Там регистрация не простая Но успешно внутри. Надо виртуалку поднять для полноценной работы. Буду смотреть что к чему.
  4. 12 принципов эффективного управления временем. Самоуважение. Я даю больше чем беру и самоуважение моё растёт. Вознаграждение. Чем больше даю, тем больше получаю. Затраты, конечный продукт. Какой конечный результат от меня ожидают. Максимальная польза от управления верменем. Время весьма скудный ресурс. Если чтото не сделал, этого уже не вернуть. Рассудительность, самостоятельность, самодисциплина. Нацеленность на рузультат. Работать качественнее. Умелое обращение - залог хорошего настроения. Управление временем и самодисциплина формирует личность и веру в себя. Длительная мотивация основана на успехе. Данная минута, данный момент - это всё время, которым я располагаю.
  5. Вся работа с letsencrypt укладывается в пару строчек: import "golang.org/x/crypto/acme/autocert" m := &autocert.Manager{ Cache: autocert.DirCache("golang-autocert"), Prompt: autocert.AcceptTOS, HostPolicy: autocert.HostWhitelist("NameProject", "www."+NameProject), } server := &http.Server{ Addr: ":443", TLSConfig: m.TLSConfig(), Handler: router, } server.ListenAndServeTLS("", "") Где router - router *mux.Router Полный пример: import ( "fmt" "github.com/gorilla/mux" _ "github.com/gorilla/mux" log "github.com/sirupsen/logrus" "golang.org/x/crypto/acme/autocert" "net/http" "os" ) func main(){ router := mux.NewRouter() router.HandleFunc("/robots.txt", func(w http.ResponseWriter, r *http.Request) { err := r.ParseForm() if err != nil { log.Println(err) } http.ServeFile(w, r, "robots.txt") }).Methods("GET") m := &autocert.Manager{ Cache: autocert.DirCache("golang-autocert"), Prompt: autocert.AcceptTOS, HostPolicy: autocert.HostWhitelist("nameproject.org", "www.nameproject.org"), } server := &http.Server{ Addr: ":443", TLSConfig: m.TLSConfig(), Handler: router, } server.ListenAndServeTLS("", "") }
  6. Как работает csrf/xsrf можно понять тут. Однако, при использование библиотеки https://github.com/gorilla/csrf можно получить такую ошибку вида: Forbidden - CSRF token invalid В итоге, после долгих ковырялок пришел к выводным результатам, которые не указаны конкретно в документации к либе, я не нашел: token передаваемый в загаловке + переданные куки _gorilla_csrf при сложении на серваке оказались не верны, из - за того, что при отправке на сервак, куки надо отдавать, те, которые выданы для определенного uri(path), с которого прийдет запрос на сервак. Подробнее: Пример правильного получения токена и кук с подробным, ну на мой взгляд, описанием: Сторона go: func main() { router := mux.NewRouter() fs := http.FileServer(http.Dir("")) router.Handle("/", fs) //######отдаем статику router.HandleFunc("/dist/{filename}", func(w http.ResponseWriter, r *http.Request) { err := r.ParseForm() if err != nil { log.Println(err) } vars := mux.Vars(r) http.ServeFile(w, r, "dist/"+vars["filename"]) }).Methods("GET") //###########END response Static csrfMiddleware := csrf.Protect( []byte("qweqw2hg23r1kul3oyukhjefw3fsafzv"), //32 битный ключ csrf.Secure(true), //при использовании http - ставьте false, https - true, по дефолту идёт - true ) //добавляем subrouter на api - тут те пути, которые будут использовать csrf от gorilla api := router.PathPrefix("/api").Subrouter() api.Use(csrfMiddleware) /* ap */ api.HandleFunc("/ap/empty-apartment", controllers.GetEmptyApartments).Methods("GET") api.HandleFunc("/ap/{id:[0-9]+}", controllers.SetApartment).Methods("POST") api.HandleFunc("/ap/delete", controllers.DeleteApartment).Methods("DELETE") //... //api.HandleFunc("другие uri ... //констансты выше обьявлены const URI_USER_GET_USER = "/user/getUser" const URI_USER_ENTER = "/user/enter" const URI_USER_REGISTRATION = "/user/registration" const URI_USER_EXIT = "/user/exit" //.. //user api.HandleFunc(user.URI_USER_GET_USER, controllers.GetUser).Methods("GET") api.HandleFunc(user.URI_USER_ENTER, controllers.Enter).Methods("GET") api.HandleFunc(user.URI_USER_REGISTRATION, controllers.Registration).Methods("POST") api.HandleFunc(user.URI_USER_EXIT, controllers.Exit).Methods("GET") api.Use(middlewareLogs.LogUri) api.Use(middlewareUser.CheckAccess) api.Use(middlewareUser.CheckRights) api.Use(middlewareUser.SetToHeader_CSRF_Token) //тут накидываем хендлер на отдачи по запросу в заголовке токен, сама функция будет ниже //########### fmt.Println("Server is listening...") //поднимаем https и указываем handler'om - router log.Fatal(http.ListenAndServeTLS(":443", "./tls/rootCA.pem", "./tls/rootCA.key", router)) //https } вот функция навешывания в возвратный заголовок токена, вот так, как в документации: /** csrf to header */ func SetToHeader_CSRF_Token(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("X-CSRF-Token", csrf.Token(r)) next.ServeHTTP(w, r) }) } Теперь переходим к стороне JS, front часть: Сначала обьясню текстом: На каждый uri(path) приходится своя кука _gorilla_csrf, а так же при запросе вы получаете токен от метода SetToHeader_CSRF_Token. При запросах к серваку, под защитой csrf надо будет передать обратно полученную куку по данному uri, так и сам токен в в заголовке. Если вы передадите не верный куки или токен, то получете как раз ошибку Forbidden - CSRF token invalid. Графически: кодом: const instance = axios.create({ timeout: 1000, headers: { "X-CSRF-Token": getters.userCsrfToken} //getters.userCsrfToken - полученный ранее. }); return instance.post('/api/user', payload);
  7. Она еще от mail group же, а все прекрасно знают истории с vk. Написал - пошутил - посидел.
  8. Да, я примерно столько же
  9. Примерно по 10GB весит IDE JetBrains, открыто PHPStorm + Goland, + google chrome просто ест оперативу.
  10. Видать угнали. Пятизнаки запрещали через mail востанавливать, вот и до 6-ти знаков дошли, наверное.
  11. Средняя ежедневная нагрузка на рабочий пк у меня такой: А какая у вас?
  12. Ошибка: 413 Request Entity Too Large Причина: Nginx по default запросы пропускает не более 1мб. Решение: Либо уменьшите запрос, либо правьте конфиг: server { .... client_max_body_size 32m; ... } 32m - увеличивайте по необходимости.
  13. Выдержка из wiki: CSRF - (англ. Сross Site Request Forgery — «межсайтовая подделка запроса», также известна как XSRF) — вид атак на посетителей веб-сайтов, использующий недостатки протокола HTTP. Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос на другой сервер (например, на сервер платёжной системы), осуществляющий некую вредоносную операцию (например, перевод денег на счёт злоумышленника). Для осуществления данной атаки жертва должна быть аутентифицирована на том сервере, на который отправляется запрос, и этот запрос не должен требовать какого-либо подтверждения со стороны пользователя, которое не может быть проигнорировано или подделано атакующим скриптом. вид Т.е.: Есть пользователь- "исследователь" - Есть пользователь - "испытуемый" - И есть сервак с имеющейся уязвимостью "CSRF/XSRF": Реализация выглядит схематично так: Словесно: "Испытуемый" заходит на дружественный проект, где нет CSRF/XSRF защиты, делает свои дела, и отправляется сёрфить инет, заходит на сайт товарища "исследователя", видит кнопочку - "Кликни и будет тебе удача во всем", кликает по ней и в тот же момент, ну почти в тот же, испытуемый изменяет пароль на своем дружественном проекте, сам того не ведая, ну и конечно получает "+ к карме и удачу в своих делах". P.S.: Знания используются как во вред окружающим, так и во благо, тёмный путь не всегда более денежный. Знания должны быть общедоступны. Человек сам решает как поступить с новыми знаниями. У вас своя голова на плечах мои верные k0d'еры.
  14. Агентство по кибербезопасности и безопасности инфраструктуры (CISA) выложило ТОП-10 уязвимостей: https://www.us-cert.gov/ncas/alerts/aa20-133a
×
×
  • Create New...