IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Sécuriser correctement des documents avec Allopass


Sujet :

ASP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut Sécuriser correctement des documents avec Allopass
    Bonjour,

    Je débute quelques peu en ASP et j'ai une question à vous poser : je dois sécuriser plusieurs pages d'un site web avec la système allopass. Pour l'instant, mettons que j'ai trois pages : page1.asp, page2.asp et page3.asp

    - page1.asp contient le script fournit par allopass.
    - En cas de code invalide entré, l'utilisateur est redirigé vers page1.asp.
    - En cas de code valide entré, l'utilisateur est redirigé vers page2.asp.
    - page2.asp conduit ensuite vers page3.asp.

    Concrétement, j'ai installé le script sur page1.asp avec succès et la redirection fonctionne. Mon problème est que j'aimerais faire en sorte que si l'utilisateur accède directement aux pages : page2.asp et page3.asp, celui-ci soit redirigé vers page1.asp s'il n'a pas entré de code valide auparavant.

    (c'est simplement pour éviter les copiages "en dur" de l'adresse des pages : page2.asp et page3.asp dans la barre d'adresse par l'utilisateur malin qui souhaiterais passer outre le système de paiement...)

    Merci pour votre aide,

    Alex

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    je suis surpris qu'Allopass ne te dise pas comment faire... as-tu consulté leur doc ou la FAQ ?
    Nico, l'agrotic géomatic

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Points : 133
    Points
    133
    Par défaut
    J'ai déjà fait la même chose sur un site en PHP, il faut utiliser les sessions (d'ailleurs c'est ce qu'ils te disent de faire sur le site d'allopass)

    - sur la page 1 tu crées une variable de session
    - sur la pages 2 et 3 tu testes ta variable de session, si elle est vide ou non instanciée, c'est qu'on a tenté de acceder à la page sans passer par la page1, dans ce cas tu renvois vers la page 1.

    Je te donne le principe vite fait, je ne me souviens plus exactement comme j'avais fais ca, l'idée est aussi que ta variable de session puisse également t'indiquer si le code rentré est le bon ou pas, mais je ne me souviens plus du tout comment je recuperais cette info.

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Oui c'est un peu ça dans l'idée... En fait Allopass donne même le code mais en php alors que je veux de l'asp et donc j'ai quelques soucis pour le "traduire" correctement.

    Voilà le code de protéction que je souhaite transposer en asp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
     $RECALL=$HTTP_GET_VARS["RECALL"];
     
     if (trim($RECALL)=="") {
      Header("Location: erreur.html");
      exit;
     }
     
     $RECALL = urlencode($RECALL);
     $AUTH = urlencode("54/75/456");
     
     $r=@file("http://www.allopass.com/check/vf.php4?CODE=$RECALL&AUTH=$AUTH");
     
     if ( substr($r[0],0,2) != "OK" ) {
      header("Location: erreur.html");
      exit;
     } 
     
    setCookie("CODE_OK","1",0,"/",".mondomaine.com",false);
     
    ?>
    Si quelqu'un pouvais e filer un petit coup de main je lui en serais très reconnaissant !

    Alex

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Points : 133
    Points
    133
    Par défaut
    laisse moi 5 min je te traduits ca et j'edite mon message

    Edit : j'ai traduit rapidement le code, le probleme qui se pose en fait c'est la lecture de l'url distante avec la fonction file en PHP ; en ASP l'ouverture d'URL distante n'est pas supportée par défaut, j'ai trouvé sur le net qu'il y a un composant AspHTTP.Conn qui permet de le faire ; donc j'ai fait le code en supposant que tu l'utilisais. Si tu ne l'as pas il faut trouver un moyen de lire un URL distante, je n'ai pas d'idée de comment le faire. Je me souviens avoir poser la question sur le forum .NET et avoir obtenu une réponse qui semblait pas mal , quelqu'un avait écrit une fonction en .NET qui permettait de le faire, maintenant faut voir si il y a moyen d'adapter cette fonction en ASP ou en réecrire une similaire (en admettant si tu fais la recherches que tu retrouves mon poste).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <%
    RECALL=Request("RECALL")
    if Trim(RECALL)="" then
    	response.redirect("erreur.html")
    	response.end
    end if
     
    RECALL=Server.UrlEncode(RECALL)
    AUTH=Server.UrlEncode("54/75/456")
     
    Set HttpObj=Server.CreateObject("AspHTTP.Conn")
     
    HttpObj.Url="http://www.allopass.com/check/vf.php4?CODE="&RECALL&"&AUTH="&AUTH
     
    result=HttpObj.GetURL
     
    if Mid(result,0,2)<>"OK" then
    	response.redirect("erreur.html")
    	response.end
    end if
     
    'mettre en session ou en cookie que le code est ok
     
    %>
    Tiens moi au courant si ca fonctionne ou pas et comment tu t'en es sorti pour la lecture d'URL distante !

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Ok merci beaucoup !

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    En effet, je rencontre un problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Objet Server error 'ASP 0177 : 800401f3' 
     
    Échec de Server.CreateObject
    Si quelqu'un peut m'aider...

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Je cherche toujours mais je ne trouve pas de solution différente en asp...
    Par différente j'entends se passer de l'objet AspHTTP.Conn

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    avec un petit coup d'XMLHttpRequest, ça ne fonctionnerait pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var oXMLHttpRequest;
    var XMLurl = 'http://www.allopass.com/check/vf.php4?CODE=<%= RECALL %>&AUTH=<%= AUTH %>';
    if (window.XMLHttpRequest) {// branch for Netscape and FireFox
    	oXMLHttpRequest = new XMLHttpRequest();
    	}
    else if (window.ActiveXObject) {// branch for IE
    	oXMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    	}
    else {// XMLHttpRequest non supporté par le navigateur   
    	alert('Votre navigateur ne permet pas de vérifier.');   
    	}
     
    etc ...
    en potassant un peu un livre sur l'AJAX (ajax à 200% de chez o'reilly), j'ai trouvé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function httpRequest(reqType, url, asynch){
    	if(window.XMLHttpRequest(){
    		request = new HMLHttpReqest();
    	}
    	else if (window.ActiveXObject){
    		request = new ActiveXObject("Msxml2.XMLHTTP");
    		if (! request){
    			request = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	}
    	request.open(reqType, url, asynch);
    	request.send(null);
    }
     
    function getReponse(pURL){
    	httpRequest("GET", pURL, true);
    	if(request.readyState == 4){
    		if(request.status == 200){
    			getReponse = request.responseText;
    		}
    	}
    }
    Nico, l'agrotic géomatic

  10. #10
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Peut être, mais dans ce cas, quel serait l'équivalent de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    result=HttpObj.GetURL
     
    if Mid(result,0,2)<>"OK" then
    	response.redirect("erreur.html")
    	response.end
    end if
    Avec un XMLHttpRequest ?

    Merci agrotic

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    alex, j'ai modifié mon post avec de quoi récupérer une chaine de caractère

    la fonction javascript te permet de récupérer la réponse alloPass, à toi de traiter ensuite en comparant la réponse avec 'OK' par exemple.

    cela à le mérite de ne pas nécessiter l'installation d'un composant sur le serveur, mais t'oblige à faire du traitement javascript (côté client) pour vérifier ce qui a été saisi par l'internaute.
    (comme je n'ai jamais intégré d'allopass, je ne sais pas si cela sera la méthode qui te conviendra le mieux)
    Nico, l'agrotic géomatic

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Ok merci, mais voilà comment j'utilise tes fonctions javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    url = "http://www.allopass.com/check/vf.php4?CODE="&RECALL&"&AUTH="&AUTH
     
    if (getReponse(url) <> "OK") then
    	Response.redirect("erreur.asp")
    	Response.end
    end if
    J'ai une erreur : "Type incompatible: 'getReponse' "

    Je pense que c'est soit la valeur retournée par getReponse qui ne peut pas être comparée à un string, soit euh... je ne vois pas en fait...

    Sinon toujours dans getReponse, a quoi correspondent les valeurs 4 et 200 ?

    Merci encore.

    Alex

    EDIT:

    j'ai même testé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function getReponse(pURL){
    	httpRequest("GET", pURL, true);
    	if(request.readyState == 4){
    		if(request.status == 200){
    			return request.responseText;
    		}
    	}
    }
    Sans plus de succès...

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    attention, mes fonctions sont en javascript et pas en vbscript !

    elles s'exécutent donc côté client et pas côté serveur. tu ne peux mélanger du traitement client et serveur ...
    par contre, tu peux, côté client, construire l'url en vbscript et générer ton javascript qui sera exécuté ensuite. fais une fonction javascript qui redirige vers telle page ou telle autre en fonction de la valeur d'une variable et le tour sera joué.
    (utilisation de document.location.href=xxx; )
    Nico, l'agrotic géomatic

  14. #14
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Euh vraiment dsl mais je ne comprends pas ce que tu veux dire, j'ai l'impression que ce que tu me dis c'est ce que je fais déjà, j'ai pas dû saisir un truc important...

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    OK,

    j'illustre ma réponse avec ton code auquel j'ajoute de la couleur :
    en rouge : je code exécuté côté client
    en bleu :le code exécuté côté serveur

    url = "http://www.allopass.com/check/vf.php4?CODE="&RECALL&"&AUTH="&AUTH

    if (getReponse(url) <> "OK") then
    Response.redirect("erreur.asp")
    Response.end
    end if


    ne vois-tu rien de gênant là-dedans ?
    Nico, l'agrotic géomatic

  16. #16
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Ok je vois mieux, mais c'est pourtant ce que j'ai besoin de faire non ?

    EDIT : Qu'entends-tu par "construire l'url en vbscript" ?

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    en fait, je pense que tu as besoin, si tu utilises ma méthode (qui n'est peut-être pas la meilleure), de faire un code ASP qui génère une page html ne contenant que du code javascript qui fera la vérification et la redirection (même code couleur que précédement) :

    1) fichier ASP :
    response.write "<html><body>"
    response.write "<script language=javascript>"
    response.write "function [...]"
    response.write "var url = http://www.allopass.com/check/vf.php4?CODE=" & RECALL & "&AUTH=" & AUTH & ";"
    response.write "var reponse = getReponse(url);"
    response.write "if(reponse == 'OK'){[...]}else{[...]}"
    response.write "</script>"
    response.write "</body></html>"


    2) fichier html résultant qui exécutera le code javascript :
    <html><body>
    <script language=javascript>
    function [...]
    var url = http://www.allopass.com/check/vf.php...=xxx&AUTH=yyy;
    var reponse = getreponse(url);
    if(reponse == 'OK'){[...]}else{[...]}
    </script>
    </body></html>


    3) redirection vers la bonne page
    Nico, l'agrotic géomatic

  18. #18
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Bon voilà mon petit compte rendu après plusieurs heures de galère, tout n'est pas encore rose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Response.write "<script language=javascript> "
    Response.write "var request = null;"
     
    Response.write "function httpR(reqType, url, asynch){ document.write('<br />dans httpR');"
    Response.write "	if(window.XMLHttpRequest)" ' Firefox   
    Response.write "    	request = new XMLHttpRequest();"   
    Response.write " 	else if(window.ActiveXObject)" ' Internet Explorer   
    Response.write "    	request = new ActiveXObject('Microsoft.XMLHTTP');"   
    Response.write " 	else {" ' XMLHttpRequest non supporté par le navigateur   
    Response.write "    	alert('Votre navigateur ne supporte pas les objets XMLHTTPRequest...');"
    Response.write "    	return;" 
    Response.write " 	}"
    Response.write "	request.open(reqType, url, asynch);"
    Response.write "	request.send(null);"
    Response.write "	document.write('<br />sortie de httpR');"
    Response.write "}"
     
    Response.write "function getReponse(pURL){ document.write('dans getReponse');"
    Response.write "	httpR('GET', pURL, true);"
    Response.write "	if(request.readyState == 4 && request.status == 200){"
    Response.write "		document.write(request.responseText);"
    Response.write "		return request.responseText;"
    Response.write "	}"
    Response.write "}"
     
    Response.write "var reponse = getReponse('http://www.allopass.com/check/vf.php4?CODE="&RECALL&"&AUTH="&AUTH&"');"
    Response.write "document.write('reponse : <br />'+reponse);"
    Response.write "if(reponse == 'OK'){"
    Response.write "	document.write('<br /><br />Paiement Allopass : OK');"
    Response.write "	document.write('<br /><br />');"
    Response.write "	document.write('Cliquez <a href=ici.asp>ICI</a> pour continuer...');"
    Response.write "}"
    Response.write "</script>"
    Je n'ai pas d'erreur sauf que j'ai "permission refusée" et je suis presque convaincu (suite à quelques tests) que l'erreur vient de la ligne

    Response.write " request.open(reqType, url, asynch);"
    Que faire ? Les XmlHttpRequest seraient-elles elles aussi compromises dans mon cas ?

    Je suis perdu ...

  19. #19
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Le problème vient bien de ces deux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Response.write "	request.open(reqType, url, asynch);"
    Response.write "	request.send(null);"
    Avec j'obtiens l'affichage :

    dans getReponse
    dans httpR
    Et dès que je les mets en commentaires :

    dans getReponse
    dans httpR
    sortie de httpRreponse :
    undefined
    Quelqu'un a t-il une solution ?

  20. #20
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    tu dois avoir une erreur javascript de retournée, non ?
    Nico, l'agrotic géomatic

Discussions similaires

  1. Scanner directement des documents avec Java
    Par Jcpan dans le forum Général Java
    Réponses: 2
    Dernier message: 21/01/2015, 12h06
  2. [Toutes versions] Classification des documents avec excel - Génie Civil
    Par Francois22 dans le forum Excel
    Réponses: 1
    Dernier message: 26/09/2011, 14h24
  3. redirection des documents avec seven
    Par glaedr dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 12/10/2010, 17h05
  4. redirection des documents avec seven
    Par neuneu1 dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 27/05/2010, 11h46
  5. Gestion des documents avec des mots cles pour la recherche
    Par padej450 dans le forum SharePoint
    Réponses: 1
    Dernier message: 07/05/2009, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo