Question

Je développe une application PHP qui utilise SQLite comme système de gestion de bases de données, MySQL et PostgreSQL etc. n'est pas une alternative (bien que je voudrais vraiment utiliser pgsql), parce que je veux que le programme d'installation très débutant convivial et zéro -headache semblables. Maintenant, beaucoup de gens utilisent un hébergement mutualisé, et beaucoup d'entre eux offrent seulement un accès FTP direct à la htdocs-répertoire, mais pas au-dessus. Cela signifie que les clients devraient mettre l'SQLite fichier_basededonnées dans leurs htdocs, ce qui signifie qu'il est accessible au monde et tout le monde peut le télécharger.

Quelle est la meilleure façon de donner au client une sorte de protection de ce qui est simple et également pris en charge sur tous les serveurs HTTP?

Était-ce utile?

La solution

Vous pouvez utiliser un fichier .htaccess et verrouiller le nom de la base il est donc pas accessible de l'extérieur. De nombreux serveurs déjà le faire pour tous les noms de fichiers commençant par un « ». Cela fonctionne sur Apache bien sûr, mais vous aurez toujours besoin des correctifs pour d'autres serveurs Web.

Votre meilleur pari est de mettre vraiment en place de telle sorte qu'il peut être hébergé au-dessus htdocs. Peut-être que vous pouvez utiliser un script d'installation qui vérifie la racine du document et déplace le fichier SQLite vers un répertoire plus élevé si possible.

Malheureusement, parce que SQLite est lu et écrit par le même utilisateur que le serveur Web, il n'y a pas moyen facile de le verrouiller l'accès externe. Hiding et le déplacer sont les seules vraies solutions que je peux penser.

Autres conseils

Il n'y a pas de protection qui fonctionne sur tous les logiciels de serveur HTTP utilisé. Le mieux que vous pouvez faire est de le déplacer en dehors de la racine du document en tant que quel que soit le serveur Web est utilisé, il ne doit jamais être servi.

En fait la protection des fichiers d'être servi dans la racine du document nécessite des connaissances sur le logiciel du serveur et de modifier sa configuration.

Par défaut (pour les installations Linux que j'ai couru à travers), Apache bloque réellement ce qui commence par .ht d'être directement servi:

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

Si vous préférez utiliser un nom de fichier comme sqlite.db pour votre fichier de base de données, vous pouvez le bloquer en utilisant cette règle:

<Files ~ "\.db$">
    Order allow,deny
    Deny from all
</Files>

Bien sûr, à mettre en œuvre cette règle sur la plupart des fournisseurs d'hébergement, vous devrez distribuer un fichier contenant .htaccess la règle. Ceux-ci peuvent manquer parfois parce qu'ils ne se présentent pas dans * NIIX listes d'annuaire (ou dans un client FTP) par défaut.

Je ne suis pas au courant de tout type similaire de la règle qui peut être utilisé pour le serveur Microsoft IIS dans un environnement hébergé partagé.

S'il serait serveur web Apache puis utiliser le fichier .htaccess. Je ne sais pas comment le faire sur IIS.

Je suppose que la première chose que vous devez placer le fichier vide index.html ou équivalent pour empêcher liste des répertoires dans le navigateur. Cela n'empêchera pas d'accéder à ce fichier si le nom et le chemin est connu, mais il vaut mieux que rien si vous ne savez pas quel serveur web, il va être sur.

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