2010-09-02 7 views
2

Je crée un site Web qui utilise un script Perl, PHP, une base de données MySQL et HTML. Ma principale préoccupation est de m'assurer qu'il n'y a pas moyen d'avoir accès à quoi que ce soit qui permette d'accéder à mes informations. Je veux dire est là de toute façon pour quelqu'un pour obtenir mon script perl et voir mes informations de base de données. Je connais l'injection sql mais je n'ai pas de formulaire pour l'information à saisir. Y a-t-il quelque chose que je devrais garder à l'esprit avec ce genre de choses?Questions de sécurité du site Web

Répondre

4

est là de toute façon quelqu'un pour obtenir mon script perl et de voir ma base de données d'informations

Cela ne se produira lorsque le serveur Web ne pas analyser/processus le script et il retourne en texte clair. Habituellement, cette analyse/traitement se produit uniquement sur des extensions de fichiers spécifiques comme .pl pour les fichiers perl et .php pour les fichiers PHP. Si vous (ou le pirate) le renomme en .txt, le client pourra obtenir le script entier en clair. Néanmoins, si un pirate est capable de le renommer, il a quand même accès à tout le script. Cela serait alors fait par un trou de sécurité dans FTP ou CMS.

De plus, je l'ai vu des scripts qui lit les fichiers (généralement des images ou d'autres fichiers statiques) de (extérieur) le contexte webapp basé sur le chemin comme paramètre. Par exemple.download.php?filename.ext Si un tel script ne vérifie pas le chemin d'accès du fichier, un pirate intelligent peut être en mesure d'obtenir des scripts en texte brut par download.php?%2Fserver%2Fhtdocs%2Fscript.php.

+0

C'est Super point !!! –

+3

Ce n'est pas la seule façon de voir la source d'un script. :) –

2

L'ampleur de cette question est de nature écrasante, mais il est une grande question et certainement importante.

Une grande partie des problèmes que vous allez avoir avec votre serveur peut être lié à l'accès au serveur lui-même, assurez-vous de ne pas utiliser les logiciels que vous n'avez pas besoin. Si vous n'avez pas besoin d'un serveur de noms, désactivez bind; il en va de même pour ftp, même sendmail si vous le pouvez. Utilisez des mots de passe forts et des ports alternatifs si possible.

Pour PHP, voir http://us3.php.net/manual/en/security.php et http://php-ids.org/; utiliser définitivement mysql_real_escape_string() et htmlentities().

Pour HTML/PHP/JS, voir http://en.wikipedia.org/wiki/Cross-site_scripting

Il y a beaucoup de choses à penser. Je recommanderais d'essayer de trouver un mentor pour vous aider à comprendre ce qui est important. Je suis un mentor en ce moment et ça l'aide beaucoup même si je ne suis pas parfait. Le SO peut aider, mais une personne en qui vous avez confiance et qui peut regarder comment vous faites les choses peut faire des recommandations que vous n'obtiendrez pas ici à moins que vous ne publiiez votre base de code entière.

1

la sécurité des applications Web est un sujet important. Cependant, vous connaissez l'une des plus grandes vulnérabilités, l'injection SQL, donc c'est un bon début.

Un couple d'autres grands sont Cross Site Scripting (XSS) et Cross Site Request Forgery (CSRF - "See-Surf")

XSS - http://en.wikipedia.org/wiki/Cross-site_scripting
CSRF - http://en.wikipedia.org/wiki/Csrf

Comme d'habitude Wikipedia offre une bonne introduction.

Vous pouvez également regarder pour vérifier l'authenticité de la demande en utilisant un HMAC
http://en.wikipedia.org/wiki/HMAC

1

aller vraiment lire ce community wiki. C'est plein d'informations. Ou cherchez juste ici sur stackoverflow il y a beaucoup de questions.

2
  1. Utilisez des espaces réservés pour SQL, même PHP le supporte.

  2. Échappez à votre sortie. Votre système de modèle peut aider ici.

  3. Utilisez le répertoire cgi-bin. Cela aide vraiment à protéger les fuites accidentelles. Il est facile de créer des URL sans cgi-bin.

  4. En Perl utiliser le mode taint, en PHP utiliser PHP renforcé.

1

Ne jamais faire confiance à aucun entrée utilisateur sous quelque forme que jamais .. :)

La partie difficile est de trouver toutes les façons un utilisateur peut fournir entrée sur votre site ..