Question

Je suis assez vert encore quand il s'agit de la programmation web, j'ai passé la plupart de mon temps sur des applications client.Donc, je suis curieux de connaître la commune exploits je dois craindre/test pour mon site.

Était-ce utile?

La solution

OWASP maintient une liste des Top 10 les attaques web pour regarder notre, en plus de faire une tonne d'autres utiles à la sécurité de l'information pour le développement web.

Autres conseils

Je poste la OWASP Top 2007 liste abrégée ici donc, les gens n'ont pas à chercher à travers un autre lien et dans le cas où la source descend.

Cross Site Scripting (XSS)

  • Les failles XSS se produire lorsqu'une application est fourni par l'utilisateur de données et les envoie à un navigateur web, sans d'abord de valider ou d'encodage de contenu.XSS permet à des attaquants d'exécuter du script dans le navigateur de la victime qui peut détourner les sessions utilisateurs, défigurer des sites web, éventuellement, présenter les vers, etc.

Failles D'Injection

  • Failles d'Injection, en particulier par injection SQL, sont courants dans les applications web.L'Injection se produit lorsque les données fournies par l'utilisateur est envoyé à un interprète dans le cadre d'une commande ou d'une requête.L'attaquant hostiles de données des astuces de l'interprète dans l'exécution involontaire de commandes ou la modification des données.

Fichier Malveillant D'Exécution

  • Code vulnérable à l'inclusion de fichier (RFI) permet à des attaquants d'hostiles au code et les données, résultant en des attaques dévastatrices, telles que le serveur de compromis.Fichier malveillant d'exécution des attaques affectent PHP, XML et tout cadre qui accepte les noms de fichiers ou les fichiers des utilisateurs.

Directe Non Sécurisée À Un Objet De Référence

  • Une référence d'objet direct se produit lorsqu'un développeur expose une référence à une mise en œuvre interne de l'objet, tel qu'un fichier, un répertoire, enregistrement de base de données, ou de clé, une URL ou un paramètre de formulaire.Les attaquants peuvent manipuler ces références pour accéder à d'autres objets sans autorisation.

Cross Site Request Forgery (CSRF)

  • Une attaque CSRF forces connecté sur la victime navigateur pour envoyer un pré-authentifié demande à une application web vulnérable, qui oblige alors le navigateur de la victime à effectuer une action hostile à l'avantage de l'attaquant.CSRF peut être aussi puissant que l'application web qu'il attaque.

La Fuite de l'Information et de la Mauvaise gestion des Erreurs

  • Les Applications peuvent involontairement fuite d'informations sur leur configuration, fonctionnement interne, ou de violer la vie privée à travers une variété de problèmes d'application.Les attaquants utilisent cette faiblesse pour voler des données sensibles, ou de mener des plus graves attaques.

Brisé d'Authentification et de Gestion de Session

  • Informations d'identification de compte et les jetons de session ne sont souvent pas protégés correctement.Les attaquants compromis mots de passe, des clés ou des jetons d'authentification pour assumer d'autres de l'identité des utilisateurs.

Stockage Cryptographique Non Sécurisé

  • Les applications Web utilisent rarement les fonctions cryptographiques pour protéger adéquatement les données et les informations d'identification.Les attaquants utilisent faiblement protégé données pour effectuer le vol d'identité et d'autres crimes, tels que la fraude par carte de crédit.

L'Insécurité Des Communications

  • Les Applications ne parviennent souvent pas à crypter le trafic réseau lorsque cela est nécessaire pour protéger les communications sensibles.

Échec de Restreindre l'Accès URL

  • Souvent, une application ne protège sensible de la fonctionnalité de prévention de l'affichage des liens ou des adresses Url pour les utilisateurs non autorisés.Les attaquants peuvent utiliser cette faiblesse pour accéder et d'effectuer des opérations non autorisées par l'accès à ces Url directement.

L'Open Web Application Security Project

-Adam

Tout le monde va dire "SQL Injection", parce que c'est le plus effrayant, de sondage, de la vulnérabilité et de la plus simple à obtenir autour de votre tête.Cross-Site Scripting (XSS) va venir en second lieu, parce que c'est aussi facile à comprendre."Pauvres entrée de validation" n'est pas une faille, mais plutôt d'une évaluation des meilleures pratiques de sécurité.

Laissez-vous tenter ce à partir d'un point de vue différent.Ici, sont des caractéristiques qui, une fois mises en œuvre dans une application web, sont susceptibles de mess vous:

  • SQL dynamique (par exemple, l'INTERFACE utilisateur de la requête constructeurs).Maintenant, vous savez probablement que la seule manière fiable de manière sûre à l'utilisation de SQL dans une application web est d'utiliser des requêtes paramétrées, où vous explicitement lier chaque paramètre dans la requête à une variable.Les lieux où je vois des applications web les plus fréquemment briser cette règle est lorsque le malveillant d'entrée n'est pas évidente paramètre (comme un nom), mais plutôt un attribut de requête.Un exemple évident est le iTunes-like "liste de lecture Intelligente" des générateurs de requêtes que vous voyez sur les sites de recherche, où les choses comme clause where-opérateurs sont transmis directement à l'arrière-plan.Un autre grand rocher à son tour sur une table de colonne pour trier, où vous verrez des choses comme DESC exposés dans les paramètres HTTP.

  • De téléchargement de fichiers.Téléchargement du fichier mess des gens de haut parce que les chemins d'accès des fichiers ressemblent étrangement URL chemins, et parce que les serveurs web de le rendre facile à mettre en œuvre le "download" de la partie juste en visant des Url à des répertoires du système de fichiers.7 sur 10 télécharger des gestionnaires de test nous permettent à des attaquants d'accéder à des fichiers arbitraires sur le serveur, parce que les développeurs d'applications assumé les mêmes autorisations ont été appliquées sur le système de fichiers "open()" appel sont appliqués à des requêtes.

  • Stockage de mot de passe.Si votre application peut m'envoyer un mail mon mot de passe brut quand je la perds, vous échouez.Il y a un unique coffre réponse fiable pour le stockage de mot de passe, qui est bcrypt;si vous êtes à l'aide de PHP, vous voulez probablement PHPpass.

  • La génération de nombre aléatoire.Un classique de l'attaque sur le web apps:réinitialisation d'un autre utilisateur mot de passe, et, parce que l'application soit en utilisant le système du "rand ()", une fonction qui n'est pas crypto-fort, le mot de passe est prévisible.Ceci s'applique également n'importe où vous êtes en train de faire de la cryptographie.Qui, par la manière, vous ne devriez pas faire:si vous êtes en s'appuyant sur les crypto anywhere, vous êtes très probablement vulnérables.

  • Dynamique de sortie.Les gens mettent trop de foi dans la validation de l'entrée.Vos chances de frotter les entrées de l'utilisateur de l'ensemble des caractères de remplacement, en particulier dans le monde réel, où les métacaractères sont parties nécessaires de la saisie de l'utilisateur, sont faibles.Une meilleure approche est d'avoir un ensemble cohérent régime de base de données de filtrage des sorties et de les transformer en entités HTML, comme quot, gt, et lt.Rails de le faire automatiquement pour vous.

  • E-mail.Beaucoup de demandes mettre en œuvre une sorte de courrier sortant capacité de permettre à un attaquant de créer un compte anonyme, ou utilisez pas de compte à tous, pour envoyer contrôlé par le pirate e-mail à l'arbitraire des adresses de courriel.

Au-delà de ces caractéristiques, le numéro 1 de l'erreur, vous êtes susceptible de faire dans votre application consiste à exposer une base de données d'ID de ligne quelque part, de sorte que l'utilisateur X pouvez voir les données de l'utilisateur Y en changeant simplement un certain nombre de "5" à "6".

bool UserCredentialsOK(User user)
{

    if (user.Name == "modesty")
        return false;
    else
        // perform other checks
}   

LES ATTAQUES PAR INJECTION SQL.Ils sont faciles à éviter, mais trop commun.

Ne JAMAIS jamais JAMAIS JAMAIS (ai-je mentionné que "jamais"?) la confiance de l'utilisateur informations transmises pour vous à partir des éléments de formulaire.Si vos données ne sont pas vérifiées avant d'être passé dans d'autres couches logiques de votre demande, vous pourriez aussi bien lui donner les clés de votre site à un inconnu dans la rue.

Vous ne mentionnez pas ce que la plate-forme, mais si sur ASP.NET démarrer avec le bon vieux Scott Guthrie et son article "Conseil/Astuce:Se prémunir Contre les Attaques par Injection SQL".

Après cela, vous devez tenir compte de ce type de données, vous allez permettre aux utilisateurs de soumettre et éventuellement de votre base de données.Si vous permettez HTML à insérer, puis par la suite, présenté vous sont grand ouverts pour le Cross Site Scripting attaques (connu sous le nom XSS).

Ce sont les deux qui me viennent à l'esprit pour moi, mais de notre propre Jeff Atwood avait un bon article à Le Codage De L'Horreur avec un examen du livre "19 Péchés capitaux de la Sécurité des Logiciels".

La plupart des gens ici ont mentionné l'Injection SQL et XSS, qui est type de correct, mais ne vous laissez pas berner - les choses les plus importantes que vous devez vous soucier en tant que développeur web est une VALIDATION de l'ENTRÉE, qui est l'endroit où XSS et de l'Injection SQL à partir de souches.

Par exemple, si vous avez un champ de formulaire qui ne pourront jamais accepter entiers, assurez-vous de mettre en place quelque chose à la fois côté client ET côté serveur pour aseptiser les données.

Vérifiez et revérifiez toutes les données d'entrée, surtout si c'est pour finir dans une requête SQL.Je suggère la construction d'un escaper de la fonction et de l'enrouler autour de rien se passe dans une requête.Par exemple:

$query = "SELECT field1, field2 FROM table1 WHERE field1 = '" . myescapefunc($userinput) . "'";

De même, si vous allez à l'écran de l'utilisateur saisie des informations sur une page web, assurez-vous que vous avez dépouillé de tout <script> tags or anything else that might result in Javascript execution (such as onLoad= onMouseOver= etc.les attributs sur les étiquettes).

C'est aussi un peu court exposé sur la sécurité par l'un de wordpress, les développeurs du noyau.

La sécurité dans wordpress

il couvre l'ensemble de la base des problèmes de sécurité dans les applications web.

Les plus courantes sont probablement à la base de données des attaques par injection et cross-site scripting attaques;parce que ceux-là sont les plus faciles à réaliser (c'est probablement parce que ce sont celles qui sont les programmeurs sont plus paresseux environ).

Vous pouvez même voir sur ce site que la plupart d'endommager des choses que vous allez être à la recherche après impliquent l'injection de code dans votre application, de sorte que les attaques de type XSS (Cross Site Scripting) et de l'injection SQL (@Patrick suggestions) sont vos plus grandes préoccupations.Fondamentalement, vous allez vouloir vous assurer que si votre application permet à un utilisateur d'injecter quelque code que ce soit, c'est réglementée et testé pour être sûr que les choses que vous êtes sûr que vous voulez autoriser un lien html, image, etc) sont passés, et rien d'autre n'est exécutée.

L'Injection SQL.Cross Site Scripting.

L'utilisation de procédures stockées et/ou des requêtes paramétrées ira un long chemin en vous protégeant de l'injection sql.Aussi ne PAS votre web app accéder à la base de données comme sa ou dbo - définir un compte d'utilisateur standard et définir les autorisations.

COMME pour les attaques de type XSS (cross site scripting) ASP.NET a quelques construit dans les protections.La meilleure chose est de filtrer les entrées à l'aide de contrôles de validation et de Regex.

Je ne suis pas expert, mais d'après ce que j'ai appris jusqu'à présent, la règle d'or est de ne pas faire confiance à tout utilisateur de données (GET, POST, COOKIE).Commune de types d'attaque et la façon de vous sauver vous-même:

  1. Les Attaques par Injection SQL:Utiliser les requêtes préparées
  2. Cross Site Scripting:Ne pas envoyer des données de l'utilisateur du navigateur, sans le filtrage de s'échapper en premier.Cela comprend également les données utilisateur stockées dans la base de données, qui à l'origine vient des utilisateurs.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top