Melhorias no MySQL
Até que enfim o MySQL está virando um banco de dados de gente grande!
A versão 5.0 do mysql traz algumas features interessantes como por exemplo SSL, Trigger SQL e Stored Procedures.
Por que utilizar Stored Procedure ? Dois motivos. Primeiro é mais rapido, não do ponto de vista computacional, uma vez que não há codigo compilado, entretanto é mais rápido do pontode vista de rede, pois caso sua procedure envolva verificação e ações (validação,insert, drop e etc) isso tudo será executado no banco de dados.Outro motivo importante é do ponto de vista de segurança, pois quanto menos expormos do nosso banco e inteligencia de nosso sistema para o mundo, menor a superficie de ataque possivel de ser explorada.
Por exemplo, caso alguem tenha acesso ao codigo de acesso ao banco de dados é melhor que esta pessoa visualize CALL sp_DoUpdate(registro) do que : DROP IF EXISTS TB_BLABLA;CREATE TABLE TB_BLABLA(...);
Infelizmente as informações na documentação está meio fraca, mas fuçando achei algumas coisas interessantes:
Penei para achar as Stored Procedures criadas por mim. Depois de muita cabeçada achei como listar as stored procedures existentes, assim como mostrar o codigo delas. Pode ser interessante utilizar tais comandos via SQL Injection em algum Pen-test (set evil_bit = on ;-)
Para listar:SELECT * FROM mysql.proc; (Eu consigo listar o codigo tb, entretanto o proximo comando o output é melhor)
Para visualizar o codigo utilizado para dar criar a procedure:show CREATE PROCEDURE sp_MinhaProcedure;
É isso :-)
Até que enfim o MySQL está virando um banco de dados de gente grande!
A versão 5.0 do mysql traz algumas features interessantes como por exemplo SSL, Trigger SQL e Stored Procedures.
Por que utilizar Stored Procedure ? Dois motivos. Primeiro é mais rapido, não do ponto de vista computacional, uma vez que não há codigo compilado, entretanto é mais rápido do pontode vista de rede, pois caso sua procedure envolva verificação e ações (validação,insert, drop e etc) isso tudo será executado no banco de dados.Outro motivo importante é do ponto de vista de segurança, pois quanto menos expormos do nosso banco e inteligencia de nosso sistema para o mundo, menor a superficie de ataque possivel de ser explorada.
Por exemplo, caso alguem tenha acesso ao codigo de acesso ao banco de dados é melhor que esta pessoa visualize CALL sp_DoUpdate(registro) do que : DROP IF EXISTS TB_BLABLA;CREATE TABLE TB_BLABLA(...);
Infelizmente as informações na documentação está meio fraca, mas fuçando achei algumas coisas interessantes:
Penei para achar as Stored Procedures criadas por mim. Depois de muita cabeçada achei como listar as stored procedures existentes, assim como mostrar o codigo delas. Pode ser interessante utilizar tais comandos via SQL Injection em algum Pen-test (set evil_bit = on ;-)
Para listar:SELECT * FROM mysql.proc; (Eu consigo listar o codigo tb, entretanto o proximo comando o output é melhor)
Para visualizar o codigo utilizado para dar criar a procedure:show CREATE PROCEDURE sp_MinhaProcedure;
É isso :-)
2 Comments:
É também mais rápido do ponto de vista comPUTAcional. Usando procedures você pula o parsing das queries. Além disso o banco a salva com uma espécie de byte-code interpretado por uma VM, como em http://www.sqlite.org/vdbe.html
mmmm sério ? pelo que eu saiba ela guarda em texto, tanto é que vc consegue visualizar o codigo. Será que isso não "vareia" de implementação pra implementação ?
Tem SQL Server que suporta até criptografia de Stored Procedure
Post a Comment
<< Home