@vGrabko99
html, css, js, php, golang, mysql

Поможет ли такая система безопасности?

Привет. Я на сервере имею все обновления безопасности и т.д. Но всё же я боюсь что если получат доступ к бд то могут наворотить делов (у меня онлайн игра. попал в базу нашел себя и нарисовал себе параметры, а может и соседям). Я шифрую login и email c помощью xxtea. Ключ вшит в исходник Golang проэкта. На сервере есть только скомпилированные бинарники. Так что без де компиляции Go узнать свою строку не выйдет.
Вот что имею в бд ee91713f34414ee3aabdc1f9eccef7ca.png
Или всё же это бесполезная мера?
Что ещё посоветуете ?
Всем спасибо

UPD.
На производительность не влияет. Шифровка и дешифровка проходят за 1 ms

pass и salt (sha512 + sha 256 + salt)
func userSave(result []string) bool {
	//result[0] = login
	//result[1] = email
	//result[2] = pass
	var salt string = newSalt()
	if salt == "err" {
		return false
	}
	var pass string = passwordHash(salt + result[2] + salt + result[1] + salt + result[1] + salt + result[2] + salt + result[0])

	res, err := DB.Exec("INSERT INTO users (login, email, pass,salt)VALUES(?,?,?,?)", string(xxtea.Encrypt([]byte(v.Trim(result[0])), X_secret)), string(xxtea.Encrypt([]byte(v.Trim(result[1])), X_secret)), pass, salt)

	if err != nil {
		print(err)
		return false
	}

	insertId, err := res.LastInsertId()

	if err != nil {
		print(err)
		return false
	}
	print(insertId)
	return true
}

func newSalt() string {
	rb := make([]byte, 64)
	_, err := rand.Read(rb)
	if err != nil {
		return "err"
	}

	return base64.URLEncoding.EncodeToString(rb)
}
func passwordHash(pass string) string {
	text := v.Trim(pass)
	hash := sha512.New()
	hash.Write([]byte(text))

	return1 := hex.EncodeToString(hash.Sum(nil))
	var i int = 0
	hashi := sha256.New()
	for i <= 10 {
		i = i + 1
		hashi.Write([]byte(return1))
		return1 = hex.EncodeToString(hashi.Sum(nil))
	}

	return return1
}
  • Вопрос задан
  • 693 просмотра
Решения вопроса 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Так что без де компиляции Go узнать свою строку не выйдет.

она будет в открытом виде лежать в памяти, если что.

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

дешифровка

дешифровка чего? пароля? Данных? Пароль должен хэшироваться (например bcrypt), что бы его нельзя было раскукожить обратно.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Информационная безопасность
software engineer
Как админ игровых серверов с опытом, я вам скажу вот что.

Регулярные бэкапы. Если вас взломают - просто закроете дырку и откатитесь назад на день-два.
Много различных логов. По логам можно проанализировать что происходило, кто пользовался багом и как.
Много различной статистики на кроне. Ежедневно можно отслеживать общее количество ресурсов в игре, сравнивать топовых игроков, делать автоматическую проверку на скорость роста. За несколько дней можно определить средний прирост в ресурсах или рейтинге, и тупо добавить условие, что если какой-то ресурс вырос больше чем в среднем - смс. Если какой-то игрок вырос в рейтинге быстрее, чем возможно в среднем - смс. Подозрительные моменты смотрите по логам, и если что ловите мошенников на ранней стадии.

Все остальные защиты - могут помочь могут не помочь, а вот бэкапы и логи - ваше главное оружие, которое может спасти от большинства проблем.
Ответ написан
@vilgeforce
Раздолбай и программист
Если добудут ваши файлы на GO и ключ состоит из печатных символов - выдерут на раз. Это первое. Даже если не из печатных - все равно выдерут.
Далее, у вас в таблице pass и salt, совершенно не ясно как из введенного юзером пароля с использованием соли получается то что в таблице, тут может быть 1001 косяк.
Ну и TEA, как по мне - быстрый и простой алгоритм, что сильно облегчит задачу перебора. Думаю в FPGA среднего пошиба можно залить пару сотен ядер для его вычисления.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы