Question

Je suis un développeur web qui est très conscient de la sécurité et essayer de faire mes applications web aussi sécurisé que possible.

Comment jamais j'ai commencé à écrire mes propres applications Windows en C # et quand il vient tester la sécurité de mon application C #, je suis vraiment seulement un novice.

Je me demandais si quelqu'un a des bons tutoriels / README sur la façon de pirater votre propre application Windows et l'écriture de code sécurisé.

Était-ce utile?

La solution

Les livres de Michael Howard sont un bon point de départ;

Il y a des tas de liens et d'articles intéressants sur le blog de Michael Howard

Il y a une présentation powerpoint intéressante de Microsoft sur l'évaluation des menaces, risques et ASP ici .

Autres conseils

En dehors de toutes les réponses évidentes pour éviter les dépassements de tampon, injection de code, session de piraterie aérienne ET. Al. vous devriez trouver quelqu'un d'autre pour vérifier votre code / logiciel parce que vous ne pouvez penser à des façons de pirater votre logiciel que vous savez comment prévenir. Seulement parce que vous ne pouvez pas trouver un moyen de pirater votre propre logiciel qui ne veut pas dire que personne ne peut.

Ceci est quelque chose qui est très difficile pour vous de faire, et je pense que vous abordez le problème du mauvais angle. Si vous écrivez une application de toute taille alors tenter de faire face à la sécurité à la fin, en cherchant des moyens spécifiques de casser votre propre logiciel, est presque impossible.

Ceci est pour plusieurs raisons. Vous pensez déjà à votre logiciel d'une certaine manière. Vous pensez à des moyens spécifiques d'interagir avec elle, et vous savez comment tirer le meilleur parti de celui-ci. Vous ne pensez pas en termes de moyens de l'exploiter, et c'est une chose difficile à faire avec le logiciel que vous êtes intimement familier.

Un autre problème est que la tâche par ce point est trop grand pour traiter. Tout problème que vous ne trouverez peut ouvrir un certain nombre d'autres problèmes. Un système large contrôle de sécurité est loin d'être assez granulaire.

Ce que vous devez faire est de penser à la sécurité pendant que vous écrivez le logiciel. Apprenez les meilleures pratiques, et de considérer chaque méthode et la classe que vous écrivez du point de vue de la sécurité. Cela va de pair avec les tests unitaires, essayez de considérer ce que les intrants pourraient faire de cette partie spécifique de ma pause de programme. puis les traiter à ce niveau.

Après que je pense qu'il est question de répondre rapidement aux problèmes de sécurité que vous faites au courant.

Les petites choses que je suis venu à travers à travers ma propre expérience.

  • Ne pas utiliser SQL dynamique, vous êtes alors vulnérable à l'injection SQL. utilisez plutôt des requêtes SQL avec des paramètres.
  • Ne pas incrémenter ids comme user_id = 1, 2, 3 etc etc et puis utilisez que dans une URL, something.aspx? User_id = 1, alors je peux deviner la prochaine id et session espoir. Même pour les comptes et ce que jamais d'autre est sensible.
  • Attention aux XSS (cross site scripting). Si vous leur nom ou quelque chose d'accepter l'entrée d'utilisateur et de stocker directement, assurez-vous qu'ils ne peuvent pas aller d'alerte d'insertion ().

est pas une liste complète. Juste les choses que j'ai rencontré récemment.

Vous pourriez faire bien pire que de lire Ross Anderson Security Engineering livre. La première édition est téléchargeable en format PDF et est une bonne lecture. Je n'ai pas lu la deuxième édition, mais je pense qu'il vaut mieux et a plus de bonnes choses en elle.

Ne notez qu'il est un livre qui explique comment construire la sécurité depuis le début, pas comment briser la sécurité, mais l'exposition des défauts de sécurité assorties devrait vous donner une bonne idée pour savoir où commencer à chercher.

Pour sécuriser votre application sous forme de victoire ouvrir et essayer de faire tout ce que l'utilisateur lambda ne doit pas faire! Je vais vous expliquer:

Si vous « dites entrer ou yes no », essayez avec A-Z, 0-9 parce que ce que certains utilisateurs font pour essayer de trouver une trace de la pile qui pourrait être intéressant. Donc, mettez validateurs partout.

Prenez garde de la connexion aux bases de données, mais si vous venez de dev web, vous devez être plus au courant que moi.)

Le plus dur est de surveiller des fuites de mémoire ou des trucs comme ça, mais qui est dans les grandes grandes applications ou pas bien développées des applications.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top