Como garantir a integridade referencial para proteger seus dados SQL

Você pode pensar que se você pode controlar quem vê, cria, modifica e exclui dados em uma tabela SQL, você está bem protegido. Contra a maioria ameaças, você está. Um hacker experiente, no entanto, ainda pode saquear a casa usando um método indireto.

Um banco de dados relacional projetado corretamente tem integridade referencial, o que significa que os dados de uma tabela na base de dados é consistente com os dados em todos os outros quadros. Para garantir a integridade referencial, os designers de banco de dados aplicar restrições às tabelas que restringem os usuários de dados pode entrar nas mesas.

Mas aqui é a desvantagem de que a proteção: Se você tem um banco de dados com restrições de integridade referencial, um usuário pode, eventualmente, criar uma nova tabela que utiliza uma coluna em uma tabela confidencial como uma chave estrangeira. Essa coluna, em seguida, serve como um link através do qual alguém pode, eventualmente, roubar informações confidenciais. Oops.

Digamos, por exemplo, que você é um famoso analista de ações de Wall Street. Muitas pessoas acreditam na precisão de suas picaretas do estoque, por isso sempre que você recomendaria um estoque para seus assinantes, muitas pessoas comprar esse estoque, e seu valor aumenta.

Você mantém a sua análise numa base de dados, que contém uma tabela chamada QUATRO ESTRELAS. Suas principais recomendações para o seu próximo boletim está nessa mesa. Naturalmente, você restringir o acesso a QUATRO ESTRELAS de modo que a palavra não vaza para o público a investir antes de seus assinantes pagantes receber a newsletter.

Você ainda é vulnerável, no entanto, se alguém pode criar uma nova tabela que utiliza o campo do nome do estoque de QUATRO ESTRELAS como uma chave estrangeira, como mostrado no exemplo de comando a seguir:

CREATE TABLE HOT_STOCKS (da CARÁTER (30) REFERÊNCIAS FOUR_STAR) -

O hacker pode agora tentar inserir o nome de todas as ações na New York Stock Exchange, American Stock Exchange e NASDAQ na tabela. Essas inserções que conseguem dizer o hacker que os estoques combinar as ações que você nome em sua mesa confidenciais. Não demorou muito para que o hacker para extrair toda a sua lista de ações.

Você pode se proteger de hacks como o que no exemplo anterior por ser muito cuidadosos sobre como inserir declarações semelhantes ao seguinte:

Referências Grant (ações) ON FOUR_STARTO SECRET_HACKER-

É evidente que este é um exagero. Você nunca iria conceder qualquer tipo de acesso a uma tabela crítica a uma pessoa não confiável, não é? Não se percebeu o que estava fazendo. No entanto, hackers de hoje não são apenas inteligente tecnicamente. Eles também são mestres da enganando as pessoas a fazer o que normalmente não faria. Aumentar para alerta máximo sempre que um fala mansa menciona qualquer coisa relacionada a sua informação confidencial.

Evitar a concessão de privilégios para as pessoas que podem abusar deles. É verdade, as pessoas não vêm com garantias impressas em suas testas. Mas se você não iria emprestar seu carro novo a uma pessoa para uma longa viagem, você provavelmente não deveria conceder-lhe o REFERÊNCIAS privilégio em uma tabela importante, também.

O exemplo anterior oferece uma boa razão para manter um controle cuidadoso da REFERÊNCIAS privilégio. Aqui estão duas outras razões pelas quais você deve manter o controle cuidadoso da REFERÊNCIAS:

  • Se a outra pessoa especifica uma restrição no Hot Ações usando um RESTRINGIR opção e você tentar excluir uma linha da sua tabela, o DBMS diz que você não pode, porque isso violaria a restrição de integridade referencial.

  • Se você quiser usar o SOLTA comando para destruir a sua mesa, você achar que você deve começar a outra pessoa SOLTA a restrição (ou sua mesa) em primeiro lugar.

A linha inferior: A ativação outra pessoa para especificar restrições de integridade na sua mesa não só introduz uma potencial violação de segurança, mas também significa que o outro usuário, por vezes, fica em seu caminho.

menu