Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o tema • Voltar para a ficha do tema
Banco de dados MySQL
4 participantes
Aldeia RPG :: VXA-OS Engine :: Recursos :: Scripts
Página 1 de 1
Banco de dados MySQL
Compatibilidade
Versão do VXA-OS: 1.0.7Plugin/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, Linux1.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.
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
GitHubCréditos
GallighanmakerÚltima edição por Valentine em Qua Dez 29, 2021 11:29 am, editado 4 vez(es)
Re: Banco de dados MySQL
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.
_________________
using C# and import Python developer || Expert in Unity Engine IDE. || 2D pixel games.
Re: Banco de dados MySQL
Essa parada aqui no database.rb:
Não abre brecha para injeção de SQL?
- 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?
_________________
Kyo Panda- Novato
- Mensagens : 15
Créditos : 4
Re: Banco de dados MySQL
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.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?
Re: Banco de dados MySQL
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:
Pode gerar problemas.
---
Pelo que vi na gem MySQL2, tem como fazer prepare de query:
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.
- 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.
_________________
Kyo Panda- Novato
- Mensagens : 15
Créditos : 4
Re: Banco de dados MySQL
Agradecemos pela contribuição. É sempre bom evitar que cretinos façam cretinices.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.
Tópico atualizado.
Re: Banco de dados MySQL
@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.
_________________
using C# and import Python developer || Expert in Unity Engine IDE. || 2D pixel games.
Re: Banco de dados MySQL
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?
_________________
IsraTwerknov- Iniciante
- Mensagens : 40
Créditos : 5
Ficha do personagem
Nível: 1
Experiência:
(0/0)
Vida:
(30/30)
Tópicos semelhantes
» [EO]Servidor MySQL
» ajuda com a Mysql
» [Resolvido] [PEDIDO] - MySQL
» Erro Mysql no vb6 em geral...
» MySQL - INT(11) vs BIGINT(11) vs TINYINT(11)
» ajuda com a Mysql
» [Resolvido] [PEDIDO] - MySQL
» Erro Mysql no vb6 em geral...
» MySQL - INT(11) vs BIGINT(11) vs TINYINT(11)
Aldeia RPG :: VXA-OS Engine :: Recursos :: Scripts
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos