AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 8470
Accepted
ThinkingMonkey
ThinkingMonkey
Asked: 2011-11-29 05:45:21 +0800 CST2011-11-29 05:45:21 +0800 CST 2011-11-29 05:45:21 +0800 CST

Webapp e MySQL: segurança em nível de linha

  • 772

Estou tentando emular a segurança em nível de linha em um aplicativo da web que estou desenvolvendo usando o MySQL.

Usando este método: Criando um banco de dados com as tabelas necessárias onde os dados pertencentes a todos os usuários serão armazenados com indexação adequada das colunas das tabelas.

Criando 'visualizações' do mysql para usuários específicos com base no ID do usuário.

Para obter segurança no nível da linha, também terei que criar uma conta mysql para cada usuário e definir permissões de 'conceder' nas visualizações.

Para a interface web será usado um framework MVC baseado em PHP.

Mas, de acordo com minha pesquisa:

1] Having separate mysql account per user "make the webapp less secure".
2]Having separate mysql account per user "increases the disk I/O".

Questões:
1] How does creating mysql user per webapp user make the webapp less secure?
2] Does the disk I/O increase considerably?
3] Is there a better way to implement row-level-security in MySQL?
4]What are the pros/cons of implementing row-level-security by the above method?

Por que estou olhando para a segurança em nível de linha?
I need row level security because there are rows which will be shared between multiple users & have 1 or 2 owners to it. Only these owners can delete/modify them.

Não consigo adicionar tags como 'segurança em nível de linha' 'disk-io' porque meus pontos de reputação são menores. Se alguém mais puder, por favor, faça.

mysql database-design
  • 1 1 respostas
  • 1899 Views

1 respostas

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2011-11-30T13:37:15+08:002011-11-30T13:37:15+08:00

    Como a criação de usuário mysql por usuário de webapp torna o webapp menos seguro?

    • Tudo o que você precisa fazer é executar SHOW GRANTS;nas conexões de banco de dados do aplicativo e todas as concessões para o usuário conectado são expostas. Isso pode incluir ver IPs de host, sub-redes. Concessões para tabelas, exibições e colunas específicas também se tornam visíveis.

    A E/S do disco aumenta consideravelmente?

    • Com certeza faria isso. Embora concessões e exibições sejam armazenadas no banco de dados information_schema (na RAM), cada exibição seria rigorosamente verificada para garantir que as tabelas subjacentes existam para usar a definição de exibição. Isso exigiria acessar o .frm para cada tabela envolvida. Quaisquer concessões em tabelas ou colunas também são verificadas em relação aos arquivos .frm subjacentes.

    Existe uma maneira melhor de implementar segurança em nível de linha no MySQL?

    • Isso pode ser um pouco louco, mas você provavelmente poderia usar gatilhos

    Exemplo

    delimiter $$
    CREATE TRIGGER check_row_priv BEFORE UPDATE ON t1
    FOR EACH ROW
    BEGIN
     IF (USER()='user1@localhost') && (OLD.is_editable=0)
     THEN
        -- Make Trigger Fail Here
     END IF;
    END; $$
    delimiter ;
    

    Escrevi outro post que mostra como abortar stored procedures e triggers . Outras respostas na pergunta podem fornecer informações sobre como abortar gatilhos ou, pelo menos, tornar os dados imutáveis.

    Quais são os prós/contras da implementação da segurança em nível de linha pelo método acima?

    • IMHO Em poucas palavras, seria a complexidade da gestão.
    • 5

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve