Banco de dados MySQL Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Banco de dados MySQL

4 participantes

Ir para baixo

Banco de dados MySQL Empty Banco de dados MySQL

Mensagem por Valentine Dom Mar 31, 2019 5:25 pm

Compatibilidade
Versão do VXA-OS: 1.0.7

Plugin/Suporte MySQL
» Reestruturado todo o script database.rb
» Removido arquivos binários que eram utilizados como banco de dados
» O banco de dados pode ser hospedado paralelo ao servidor, ganhando performance e escalabilidade
» O servidor grava todas as informações de contas, jogadores, bancos, switches, variaveis no banco de dados
» Self-deleted para os personagens, não ocasionando perda de dados e para futuros sistemas

Arquivos alterados
Todas as mudanças foram comentadas para identificar e para um melhor entendimento, segue abaixo lista de scripts modificados
» Main.rb
Adicionado o método para criar o banco de dados
» Database.rb
Contém todas as interações do banco de dados
» Handle_data.rb
Alterada a função "handle_login" e "handle_new_character"
» Game_accounts.rb
Alterada a função "save_data"
» Structs.rb
Alterado os models Account e Actor
» Nova pasta Database
Config.json contém as configurações de conexão com o servidor MySQL
vxaos_srv.sql contém o script que cria o banco de dados e suas tabelas, por favor não alterar o arquivo, apenas se souber o que está fazendo.

Como configurar
1) Instale o Ruby Windows, Linux
1.1) Em ambiente Linux, além de instalar o Ruby, precisa instalar outras depencencias como:
sudo apt-get install build-essential patch
sudo apt-get install ruby-dev zlib1g-dev liblzma-dev libffi-dev gcc make libmysqlclient-dev
1.2) Em ambiente Windows ou Linux instale as gem's
» gem install eventmachine
» gem install mysql2
No Windows é um pouco complicado essa gem, então baixe esses arquivos Mega.nz e descompacte em alguma pasta. Após descompactar execute o seguinte comando para instalar: gem install mysql2 -- '--with-mysql-lib="caminho_onde_extraiu\lib" --with-mysql-include="caminho_onde_extraiu\include"
» gem install json
» gem install colorize
2) Instale o servidor MySQL 5.7 Windows, Linux
3) Renomeie o arquivo Database/config.sample para Database/config.json
4) Altere o arquivo Database/config.json com as informações do banco de dados
» host
» port
» user
» password
5) Execute o script main.rb pelo terminal (cmd)
./main.rb ou ruby main.rb
O Script cria automaticamente o banco de dados e suas tabelas caso não existirem e com isso será iniciado.
Ao utilizar Linux execute o comandoo: nohup ruby main.rb $
Com isso será executado em segundo plano, podendo sair do terminal ssh.
Banco de dados MySQL 68747470733a2f2f696d6167652e70726e747363722e636f6d2f696d6167652f7752687a4d394c45515375646b5f49634d77397266672e706e67

Arquivos não monitorados
Segue abaixo lista de arquivos não monitorados, ou seja, podemos modificar qualquer informação desses arquivos e eles não serão enviados para o git. O gitignore foi configurado dessa forma para não interferir em outros projetos. Ao clonar o projeto certifique-se de adicionar seus próprios arquivos.
Icon/.
Data/.
Logs/.
configs.ini
quests.ini
motd.txt
Database/config.json

Download
GitHub

Créditos
Gallighanmaker


Última edição por Valentine em Qua Dez 29, 2021 11:29 am, editado 4 vez(es)
Valentine
Valentine
Administrador
Administrador

Medalhas : Banco de dados MySQL ZgLkiRU
Mensagens : 5343
Créditos : 1164

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

Banco de dados MySQL Empty Re: Banco de dados MySQL

Mensagem por GallighanMaker Seg Abr 01, 2019 12:27 am

Pessoal, atualizei o git com algumas melhorias na documentação porém o @Valentine vai atualizar aqui. Qualquer dúvida sobre o plugin por favor compartilhar, irei ajudar assim que possível.

_________________
Banco de dados MySQL 8dVK0ku
using C# and import Python developer || Expert in Unity Engine IDE. || Banco de dados MySQL 769_heart 2D pixel games.
GallighanMaker
GallighanMaker
Colaborador
Colaborador

Medalhas : Banco de dados MySQL ZgLkiRU
Mensagens : 985
Créditos : 102

Ficha do personagem
Nível: 1
Experiência:
Banco de dados MySQL Left_bar_bleue0/0Banco de dados MySQL Empty_bar_bleue  (0/0)
Vida:
Banco de dados MySQL Left_bar_bleue30/30Banco de dados MySQL Empty_bar_bleue  (30/30)

https://kingsland-online.com/

Ir para o topo Ir para baixo

Banco de dados MySQL Empty Re: Banco de dados MySQL

Mensagem por Kyo Panda Seg Abr 01, 2019 9:04 am

Essa parada aqui no database.rb:

Código:
# Consulta para listar a conta de usuario
query_load_account = "SELECT * FROM accounts WHERE username = '#{user}'"

Não abre brecha para injeção de SQL?

_________________
Banco de dados MySQL 1x
Kyo Panda
Kyo Panda
Novato
Novato

Mensagens : 15
Créditos : 4

Ir para o topo Ir para baixo

Banco de dados MySQL Empty Re: Banco de dados MySQL

Mensagem por Valentine Seg Abr 01, 2019 9:26 am

Kyo Panda escreveu:Essa parada aqui no database.rb:

Código:
# Consulta para listar a conta de usuario
query_load_account = "SELECT * FROM accounts WHERE username = '#{user}'"

Não abre brecha para injeção de SQL?
A gem usada por ele é uma abstração para MySQL e SQLite, ou seja, você consegue usar os dois sem precisar alterar muita coisa no código.
Valentine
Valentine
Administrador
Administrador

Medalhas : Banco de dados MySQL ZgLkiRU
Mensagens : 5343
Créditos : 1164

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

Banco de dados MySQL Empty Re: Banco de dados MySQL

Mensagem por Kyo Panda Seg Abr 01, 2019 9:58 am

Injeção de SQL rola tanto no MySQL, quanto no SQLite. Numa query dessa, se ela não for preparada, um request feito com o user:

Código:
'; DROP DATABASE users;--

Pode gerar problemas.

---

Pelo que vi na gem MySQL2, tem como fazer prepare de query:

Código:
# Consulta para listar a conta de usuario
query_load_account = "SELECT * FROM accounts WHERE username = ?"

stmt = mysql_client.prepare(query_load_account)

result = stmt.execute(user)

Isso evitaria que algum cretino tente alguma graça.

É até possível ficar fazendo sanitize de campo para evitar isso, mas é sempre melhor usar os built-in das linguagens.

_________________
Banco de dados MySQL 1x
Kyo Panda
Kyo Panda
Novato
Novato

Mensagens : 15
Créditos : 4

Ir para o topo Ir para baixo

Banco de dados MySQL Empty Re: Banco de dados MySQL

Mensagem por Valentine Seg Abr 01, 2019 10:04 am

Kyo Panda escreveu:Injeção de SQL rola tanto no MySQL, quanto no SQLite. Numa query dessa, se ela não for preparada, um request feito com o user:

Código:
'; DROP DATABASE users;--

Pode gerar problemas.

---

Pelo que vi na gem MySQL2, tem como fazer prepare de query:

Código:
# Consulta para listar a conta de usuario
query_load_account = "SELECT * FROM accounts WHERE username = ?"

stmt = mysql_client.prepare(query_load_account)

result = stmt.execute(user)

Isso evitaria que algum cretino tente alguma graça.

É até possível ficar fazendo sanitize de campo para evitar isso, mas é sempre melhor usar os built-in das linguagens.
Agradecemos pela contribuição. É sempre bom evitar que cretinos façam cretinices.

Tópico atualizado.
Valentine
Valentine
Administrador
Administrador

Medalhas : Banco de dados MySQL ZgLkiRU
Mensagens : 5343
Créditos : 1164

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

Banco de dados MySQL Empty Re: Banco de dados MySQL

Mensagem por GallighanMaker Seg Abr 01, 2019 11:58 pm

@Kyo Panda boa man, não fiz nada relacionado a segurança ainda e a minha ideia era converter toda a base de dados, é logico que segurança é importante mas só esse trabalho de converter tudo já vai ajudar os projetos a subirem um degrau, dai pra frente é melhorias e se proteger. Se interessar, pode realizar commits no repositório , deixarei aberto essa possibilidade pra melhorias do pessoal como a que sugeriu.

_________________
Banco de dados MySQL 8dVK0ku
using C# and import Python developer || Expert in Unity Engine IDE. || Banco de dados MySQL 769_heart 2D pixel games.
GallighanMaker
GallighanMaker
Colaborador
Colaborador

Medalhas : Banco de dados MySQL ZgLkiRU
Mensagens : 985
Créditos : 102

Ficha do personagem
Nível: 1
Experiência:
Banco de dados MySQL Left_bar_bleue0/0Banco de dados MySQL Empty_bar_bleue  (0/0)
Vida:
Banco de dados MySQL Left_bar_bleue30/30Banco de dados MySQL Empty_bar_bleue  (30/30)

https://kingsland-online.com/

Ir para o topo Ir para baixo

Banco de dados MySQL Empty Re: Banco de dados MySQL

Mensagem por IsraTwerknov Sáb Out 05, 2019 3:09 pm

Blast escreveu:"No Windows é um pouco complicado essa gem, então baixe esses arquivos Mega.nz e descompacte em alguma pasta. Após descompactar execute o seguinte comando para instalar: gem install mysql2 -- '--with-mysql-lib="caminho_onde_extraiu\lib" --with-mysql-include="caminho_onde_extraiu\include"



Onde esta esse arquivo do Mega.nz?

_________________
Banco de dados MySQL Banner10
IsraTwerknov
IsraTwerknov
Iniciante
Iniciante

Mensagens : 40
Créditos : 5

Ficha do personagem
Nível: 1
Experiência:
Banco de dados MySQL Left_bar_bleue0/0Banco de dados MySQL Empty_bar_bleue  (0/0)
Vida:
Banco de dados MySQL Left_bar_bleue30/30Banco de dados MySQL Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

Banco de dados MySQL Empty Re: Banco de dados MySQL

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos