OVH Cloud OVH Cloud

Developpement Local et distant

4 réponses
Avatar
Francois Soucy
Bonjour,

Je développe en local et lorsque certaines parties du site sont
prête je les envoies sur le serveur. Par contre je dois utiliser une
variables boolean dans une classe qui me dit si je suis en local ou pas.
Donc si je suis en local l'url est http://localhost/... et si je suis sur le
serveur l'adresse est http://www.MonSiteWeb.com . A chaque compile je dois
modifier cette variable en conséquence. Existe-t-il une facon plus
paresseuse de déterminer si je suis en local ou sur mon site web sans devoir
jour dans les variables?

2ieme question:
Sur mon projet web j'utilise une authentification formulaire
(Cookie) utilisant un user/pass dans une base de donnée. Comment puis-je
tester cette authentification pour m'assurer un niveu de sécurité normal. Je
veux dire par là quel sont les tests a effectuer pour tester la sécurité?

Merci
Francois

4 réponses

Avatar
RAVAILLE James
Bonjour,

Voici une solution...

Pouquoi n'utiliserais-tu pas la section <AppSettings> de la section
<Configuration> du fichier de configuration Web.Config de ton application Web.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Environnement" value="Local" />
</appSettings>
<configuration>

La variable Environnement pourrait avoir les valeurs Local ou Server. Le
Framework .NET fournit les classes qui permettent de récupérerles paramètres
de l'application. En effet, tu peux utiliser la classe
System.Configuration.AppSettingsReader de la manière suivante :
Dim oAppSettingsReader as new System.Configuration.AppSettingsReader()
MessageBox.Show(oAppSettingsReader.GetValue("Environnement"),
GetType(System.String))

La valeur du paramètre apparaît. A chaque fois que tu livres ton application
sur le serveur, tu ne relivres pas le fichier Web.Config, excepté si tu as
effectué des modifications. De cette manière, tu n'as pas à changer sa valeur
tout le temps.




Une autre solution (un peu moins professionnelle...) : tu ne pourais pas
utiliser deux pages web d'accès à ton application. Une pour utiliser
l'application en 'Local' et l'autre en 'Server' ? ...

A+.
--
James RAVAILLE.


"Francois Soucy" a écrit :

Bonjour,

Je développe en local et lorsque certaines parties du site sont
prête je les envoies sur le serveur. Par contre je dois utiliser une
variables boolean dans une classe qui me dit si je suis en local ou pas.
Donc si je suis en local l'url est http://localhost/... et si je suis sur le
serveur l'adresse est http://www.MonSiteWeb.com . A chaque compile je dois
modifier cette variable en conséquence. Existe-t-il une facon plus
paresseuse de déterminer si je suis en local ou sur mon site web sans devoir
jour dans les variables?

2ieme question:
Sur mon projet web j'utilise une authentification formulaire
(Cookie) utilisant un user/pass dans une base de donnée. Comment puis-je
tester cette authentification pour m'assurer un niveu de sécurité normal. Je
veux dire par là quel sont les tests a effectuer pour tester la sécurité?

Merci
Francois





Avatar
YJLAMOTTE
Question 1
Pourquoi ne pas utiliser Request.ApplicationPath ?

Question 2
Une sécurité "normale" serait de faire un select Count(ID_USER) dans ta base
WHERE USER=user et PASS = password.. Tu regardes si Count>0

Apres tu peux utiliser du cryptage si tu veux t'amuser.. y a plein
d'articles...

YJLAMOTTE


"Francois Soucy" a écrit :

Bonjour,

Je développe en local et lorsque certaines parties du site sont
prête je les envoies sur le serveur. Par contre je dois utiliser une
variables boolean dans une classe qui me dit si je suis en local ou pas.
Donc si je suis en local l'url est http://localhost/... et si je suis sur le
serveur l'adresse est http://www.MonSiteWeb.com . A chaque compile je dois
modifier cette variable en conséquence. Existe-t-il une facon plus
paresseuse de déterminer si je suis en local ou sur mon site web sans devoir
jour dans les variables?

2ieme question:
Sur mon projet web j'utilise une authentification formulaire
(Cookie) utilisant un user/pass dans une base de donnée. Comment puis-je
tester cette authentification pour m'assurer un niveu de sécurité normal. Je
veux dire par là quel sont les tests a effectuer pour tester la sécurité?

Merci
Francois





Avatar
Antoine F.
> Bonjour,


Bonjour,

A chaque compile je dois
modifier cette variable en conséquence. Existe-t-il une facon plus
paresseuse de déterminer si je suis en local ou sur mon site web sans devoir
jour dans les variables?



Oui. Rendre ton application capable de 'détecter' elle-même si tu travailles
en mode local ou non, cf proposition de YJLAMOTTE avec une petite
modification:

Request.ApplicationPath comme son nom l'indique ne renvoie que le chemin
de ton application...

Il faudrait plutôt utiliser Request.ServerVariables["HTTP_HOST"], variable
plus judicieuse dans la mesure où elle indique exactement ce qu' a saisi l'utilisateur
dans son navigateur.

------------------------------------------------------------
bool bLocalMode = false;

if(Request.ServerVariables["HTTP_HOST"] == "localhost")
{
bLocalMode = true;
}
------------------------------------------------------------


2ieme question:
Sur mon projet web j'utilise une authentification formulaire
(Cookie) utilisant un user/pass dans une base de donnée. Comment puis-je
tester cette authentification pour m'assurer un niveu de sécurité normal. Je
veux dire par là quel sont les tests a effectuer pour tester la sécurité?



Sur cette question, plusieurs pages peuvent être écrites. Voici un résumé de
specs pour une authentification que je qualifierais de 'correcte' en termes de
sécurité:

1. Pour vérifier l'identité de l'utilisateur (authentification) :

sql:
SELECT COUNT(*) AS result
FROM users
WHERE LOGIN = 'login'
AND PASSWORD = 'pass'

Si result = 1
authentification réussie
Sinon Si result > 1
erreur d'integrité ou intrusion sûrement réussie -> envoyer mail urgent au
développeur ou dba avec détails de l'authentification
Sinon Si result = 0
Echec d'authentification.
Autrement
ce cas ne doit jamais se présenter -> envoyer mail urgent au dév
avec détails authentification
Fin du test


2. Limiter le nombre de tentatives possibles soit en forçant un délai entre les
essais, soit en limitant le nombre d'échecs possibles, etc..

3. Ne JAMAIS afficher de message d'erreur détaillé. Surtout pas de 'utilisateur
inconnu' ou 'mot de passe faux' mais préférer plutôt 'L'authentification a échoué'.

4. Ne pas stocker les mots de passes en clair dans la base de données. J'ai
récemment posté un bulletin sur ce sujet:
(http://www.nxtg.net/is/index.php?p)

5. Si l'utilisateur est déjà connecté, détruire l'autre session pour le même utilisateur
(surveillance si possible)

6. Proposer un lien de déconnexion lorsque l'on est connecté.

Il est possible d'aller beaucoup plus loin mais avec ceci tu peux déjà prétendre
à avoir pris en considération un besoin de sécurité au niveau du contrôle d'accès
à ton application.

S'il t'en faut plus.... suffit de demander et on te remplit la liste avec 50 points ; )


.antoine
--
Blog Dev et Sécu Web (Swiss blog about Web Security and Development)
http://www.nxtg.net/is/
Avatar
Francois Soucy
Bonjour,
Cela semble très intéressant pour se que je veux en faire! Je vais conserver
le post sur mon bureau à la maison et dès que j'ai une soirée de libre je
m'y met attentivement! Il en est de même pour la sécurité!

Merci
Francois

"Antoine F." wrote in message
news:uF$
> Bonjour,
Bonjour,

> A chaque compile je dois
> modifier cette variable en conséquence. Existe-t-il une facon plus
> paresseuse de déterminer si je suis en local ou sur mon site web sans


devoir
> jour dans les variables?

Oui. Rendre ton application capable de 'détecter' elle-même si tu


travailles
en mode local ou non, cf proposition de YJLAMOTTE avec une petite
modification:

Request.ApplicationPath comme son nom l'indique ne renvoie que le chemin
de ton application...

Il faudrait plutôt utiliser Request.ServerVariables["HTTP_HOST"], variable
plus judicieuse dans la mesure où elle indique exactement ce qu' a saisi


l'utilisateur
dans son navigateur.

------------------------------------------------------------
bool bLocalMode = false;

if(Request.ServerVariables["HTTP_HOST"] == "localhost")
{
bLocalMode = true;
}
------------------------------------------------------------


> 2ieme question:
> Sur mon projet web j'utilise une authentification formulaire
> (Cookie) utilisant un user/pass dans une base de donnée. Comment puis-je
> tester cette authentification pour m'assurer un niveu de sécurité


normal. Je
> veux dire par là quel sont les tests a effectuer pour tester la


sécurité?

Sur cette question, plusieurs pages peuvent être écrites. Voici un résumé


de
specs pour une authentification que je qualifierais de 'correcte' en


termes de
sécurité:

1. Pour vérifier l'identité de l'utilisateur (authentification) :

sql:
SELECT COUNT(*) AS result
FROM users
WHERE LOGIN = 'login'
AND PASSWORD = 'pass'

Si result = 1
authentification réussie
Sinon Si result > 1
erreur d'integrité ou intrusion sûrement réussie -> envoyer mail


urgent au
développeur ou dba avec détails de l'authentification
Sinon Si result = 0
Echec d'authentification.
Autrement
ce cas ne doit jamais se présenter -> envoyer mail urgent au dév
avec détails authentification
Fin du test


2. Limiter le nombre de tentatives possibles soit en forçant un délai


entre les
essais, soit en limitant le nombre d'échecs possibles, etc..

3. Ne JAMAIS afficher de message d'erreur détaillé. Surtout pas de


'utilisateur
inconnu' ou 'mot de passe faux' mais préférer plutôt 'L'authentification a


échoué'.

4. Ne pas stocker les mots de passes en clair dans la base de données.


J'ai
récemment posté un bulletin sur ce sujet:
(http://www.nxtg.net/is/index.php?p)

5. Si l'utilisateur est déjà connecté, détruire l'autre session pour le


même utilisateur
(surveillance si possible)

6. Proposer un lien de déconnexion lorsque l'on est connecté.

Il est possible d'aller beaucoup plus loin mais avec ceci tu peux déjà


prétendre
à avoir pris en considération un besoin de sécurité au niveau du contrôle


d'accès
à ton application.

S'il t'en faut plus.... suffit de demander et on te remplit la liste avec


50 points ; )


.antoine
--
Blog Dev et Sécu Web (Swiss blog about Web Security and Development)
http://www.nxtg.net/is/