2010-06-15 6 views
2

Cette question est à des fins d'apprentissage. Supposons que j'écris une console d'administration SQL simple en utilisant CGI et Python. Au http://something.com/admin, cette console d'administration devrait me permettre de modifier une base de données SQL (c'est-à-dire, créer et modifier des tables et créer et modifier des enregistrements) en utilisant un form ordinaire.Comprendre CGI et la sécurité SQL à partir de zéro

  1. Dans le cas le moins sécurisé, n'importe qui peut accéder à http://something.com/admin et modifier la base de données.
  2. Vous pouvez protéger par mot de passe http://something.com/admin. Mais une fois que vous commencez à utiliser la console d'administration, les informations sont toujours transmises en texte brut. Donc, vous utilisez HTTPS pour sécuriser les données transmises.

Questions:

  1. Décrire à un apprenant, comment voulez-vous progressivement ajouter de la sécurité au moins environnement sécurisé afin de le rendre plus sûr? Comment pourriez-vous modifier/augmenter mes trois étapes (éventuellement erronées) ci-dessus?
  2. Quels outils de base en Python rendent vos étapes possibles?
  3. Facultatif: Maintenant que je comprends le processus, comment les bibliothèques et les frameworks sophistiqués atteignent-ils intrinsèquement ce niveau de sécurité?

Répondre

3

La sécurité n'est pas un travail de patch, c'est une approche holistique.

L'ajout incrémentiel de la sécurité est pas une bonne idée. Vous devez intégrer la sécurité dans votre application à partir de zéro.

Le meilleur conseil que je peux vous donner est d'essayer de penser comme un attaquant. Pensez à vous-même: "Si je voulais faire quelque chose que je ne suis pas supposé être capable de faire, comment le ferais-je?"

Si vous concevez une application qui utilise une base de données, nous prenons soin de ne pas autoriser SQL Injections. Vous devriez également être au courant de certains des most popular web vulnerabilities si vous faites une application web.

+0

Nous vous remercions de votre suggestion. Ce deuxième lien était vraiment utile. Sans beaucoup d'expérience, il m'est difficile de penser comme un attaquant parce que je ne connais pas mes options, mais ce lien rend ces options assez évidentes. –

2

non spécifique à Python, mais toutes les fonctions administratives qui offrent ce niveau de contrôle sur un système doivent être protégées par SSL et un mécanisme d'authentification et d'autorisation (login) à tout le moins.

2

La toute première préoccupation que j'ai est la protection contre les vulnérabilités CSRF. Ensuite, je serais concerné par Broken Authentication and Session Management. Plus important encore, afin de maintenir une session sécurisée, vous devez utiliser https pendant toute la durée de la session. Si vous deviez renverser un mot de passe ou un identifiant de session ou même une requête SQL en texte brut, ce serait une mauvaise chose.