2017-03-08 3 views
0

Cela a donc moins à voir avec le code lui-même et plus d'efficacité et de praticité. Lors de mon précédent emploi, nous avions plusieurs bases de données. Un qui était accessible par des moyens publics, et un qui peut seulement être accédé en privé. La base de données publique pouvait essentiellement montrer tout ce que le privé faisait et ils étaient à peu près synchronisés, se tenant à jour toutes les 2 minutes environ. Leur idée était que si la base de données publique était détruite avec un type d'injection SQL ou quelque chose d'autre malveillant qui détruisait la base de données, cela ne faisait pas de mal à la production, et elle pouvait être immédiatement restaurée.Sécurité de base de données double SQL

Cependant, c'était une opération à petite échelle, environ seulement 100 personnes accédant à la DB en même temps, et si quelque chose de mal se passait, je suis sûr que quelqu'un devait manuellement restaurer la base de données pour résoudre le problème. .

Ma question est, est-ce une façon correcte de faire les choses? Quand ce genre de tactique commence-t-il à devenir incroyablement inefficace si jamais? Hypothétiquement, si j'avais des dizaines de milliers de requêtes par jour, cela serait-il impossible à maintenir?

Merci pour la perspicacité.

+1

"Est-ce une façon correcte de faire les choses?" - probablement pas. N'exposez pas la base de données directement. Placez une API autorisée sur celle-ci; au minimum des vues en lecture seule. Ne mélangez pas non plus les problèmes OLTP et OLAP. –

+0

* les bases de données publiques * sont toujours une mauvaise idée. mais: si votre base de données publique peut être affectée par SQL Injection, alors il en va de même pour votre base de données privée - parce que, d'une façon ou d'une autre, les données doivent y arriver, n'est-ce pas? aussi, au lieu de la destruction des données, qui peut être atténuée par des ** sauvegardes **, vous devriez plutôt vous inquiéter de la fuite de données. donc la plupart de vos efforts devraient aller dans le fait de rendre votre code ** sûr ** et votre base de données ** non publique ** –

Répondre

0

La première ligne de défense doit être les logiciels ont accédé à la base de données, il existe de nombreuses façons d'éviter les injections sql comme SP, l'envoi de paramètres au lieu de requêtes, ... bien que si les utilisateurs du système fournir des données (comme ce forum) ayant une base de données privée n'est pas mieux que d'avoir une copie de la base de données (que vous dites synchroniser toutes les 2 minutes, tout changement dans le public change aussi le privé). Vous pouvez avoir une copie différente de vos données avec des intervalles différents et revenir à tout moment à un bon moment quand quelque chose se passe.

Je travaillais pour une banque, ils faisaient une copie sur le ruban! C'est une écriture une fois/lecture seule bande au cas où quelque chose de plus grand que l'injection sql est arrivé!