PureBasic

Forums PureBasic
Nous sommes le Sam 24/Aoû/2019 9:26

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 20 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 15:10 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
J'aurais besoin de sécuriser un script Php exécuté depuis une application codée avec PureBasic.

■ Ce code simule la création d'un compte, la connexion et la déconnexion.
Code:
Enumeration
  #PR_Sign_Up
  #PR_Sign_In
  #PR_Sign_Out
EndEnumeration

Define url.s = "http://s242132022.onlinehome.fr/game01/"
Define script.s = "test.php"
Define parameters.s = "?process=" + #PR_Sign_In

Define header.s, buffer.s, *buffer

InitNetwork()

header = GetHTTPHeader(url + script)
Buffer = StringField(Header, 1, #LF$)

If FindString(Buffer, "200 OK")
  *buffer = ReceiveHTTPMemory(url + script + "/" + URLEncoder(parameters))
 
  If *buffer
    Size = MemorySize(*buffer)
    buffer = PeekS(*buffer, Size, #PB_UTF8|#PB_ByteLength)
    FreeMemory(*buffer)
  EndIf
 
  Debug buffer
Else
  Debug "connexion failed"
EndIf
■ Le script php test.php exécuté depuis le code PureBasic
Code:
<?php
   define("PR_Sign_Up", 0);
   define("PR_Sign_In", 1);
   define("PR_Sign_Out", 2);
   
   if (isset($_GET['process'])) {
      switch (($_GET['process'])) {
         case PR_Sign_Up :
            echo "Account create";
            break;

            case PR_Sign_In :
            echo "welcome";
            break;
         
         case PR_Sign_Out :
            echo "bye";
            break;
         
         default:
            echo '-1';
      }
   }   
?>
:?: Comment empêcher l’exécution du script php en ligne de commande ?
Exemple : http://s242132022.onlinehome.fr/game01/ ... ?process=1

:idea: La piste que je vois actuellement est d'envoyer un ou plusieurs paramètres supplémentaires comme le nom de l'application et la taille de l'application et de tester ces paramètres depuis le script php.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 16:14 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1592
Il faut que tu utilises le mécanisme des sessions.
Si tu ne veux pas imposer de cookie à tes clients, tu peux passer l'ID de session par URL.
Si tu ne veux pas qu'ensuite quelqu'un d'autre réutilise l'URL avec ID tu stocke l'ID en base de données et tu le verrouille au logout ou après un certain délai.

(de mémoire, car ça fait plus de 10 ans que je n'ai plus fait cela, donc ne compte pas sur moi pour plus d'explications :cry: )

_________________
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 16:52 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
Marc56 a écrit:
Si tu ne veux pas imposer de cookie à tes clients, tu peux passer l'ID de session par URL.
Cookies ou paramétrés je sais faire dans le cadre d'un dev 100% web.

Avec PureBasic je ne suis pas certain qu'on puisse gérer des cookies et des variables de session. En tout cas je ne sais pas faire.

session_start() depuis PB ça va être compliquer :wink:

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 17:06 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1592
Citation:
session_start() depuis PB ça va être compliquer
:arrow: RunProgram("php", "-f " + script, "" etc)

Même si PHP s'utilise le plus souvent en tant que module, et pour des applis web, c'est un langage script à part entière
Code:
EXE = RunProgram("C:\PHP\PHP.EXE", "-v", "", #PB_Program_Open | #PB_Program_Read)
If EXE
    While ProgramRunning(EXE)
        If AvailableProgramOutput(EXE)
            Debug ReadProgramString(EXE)
        EndIf
    Wend
    CloseProgram(EXE)
EndIf
php -f file

:arrow: Depuis la v4? 5 ? il peut même agir comme son propre serveur web
PHP -S <addr>:<port> Run with built-in web server

:wink:

_________________
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Dernière édition par Marc56 le Mar 24/Avr/2018 17:13, édité 3 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 17:07 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8739
Tu ne peux pas créer une variable $truc vierge dans ton php qui serait initialisé par PB lors du lancement ?
Si oui à ce moment dans ton script tu check la longueur de $truc..

Code:
<?php
si strlen($truc) == 0 alors ;
echo 'Get out b!tch !';
?>

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 17:08 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4222
Localisation: Arras, France
Tu peux bricoler ton propre système de vérification, tu crées un code selon un algo perso en pb, et le décodeur en php pour vérification. Simple et efficace. D'ailleurs je me demande si je n'en avais pas posté un il y a un moment déjà.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 17:11 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
@Marc : Je ne cherche pas à lancer Php.exe.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 17:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 17/Déc/2007 12:44
Messages: 1628
Bonjour,

Pour moi le plus simple est d'utiliser le "useragent" avec un codage personnel qui change en fonction de (a toi de faire)... Pour cela en PB cela donne :

Code:
ReceiveHTTPMemory (.............., #PB_HTTP_Asynchronous, **le codage perso du useragent**)


et en PHP :

Code:
if ($_SERVER['HTTP_USER_AGENT'] != '**la verification du useragent**')
{
   echo "forbidden";
   exit();
}


Cordialement,
GallyHC

_________________
Image

Image

Image Official site of PureBasic
Image Official site of SpiderBasic

Configuration : Tower: Windows 7 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.62 (x86 et x64)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 17:29 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 27/Oct/2006 12:19
Messages: 1224
Localisation: Calvados (14)
Salut Falsounet,

Mets ton scripts php dans un dossier, et dans ce dossier, tu mets un .htaccess qui empêche l'accès extérieur. Comme ça ton "serveur" est le seul qui peut aller exécuter ton script.

Un peu dans ce style :
Code:
order deny,allow
deny from all


Normalement, ton code étant exécuté par ton "serveur", il pourra lancer le script via les permissions de dossier.

Un autre moyen est de stocker ton script php en dehors de ton dossier www : si ton serveur est du genre /home/var/www, tu crées un dossier /home/var/mesPHP et tu vas les chercher via "include"

_________________
Image

Image


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 18:08 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
Merci Tazou mais je préfère pour le moment la solution de Gally.

La petite phrase qui fera le lien entre le code PB et PHP
Code:
Define useragent.s = "The quick brown fox jumps over the lazy dog."
Le md5 de cette phrase calculé par le script Php est "e4d909c290d0fb1ca068ffaddf22cbd0"
Code:
define("USER_AGENT_MD5", "e4d909c290d0fb1ca068ffaddf22cbd0");

■ Code PureBasic
Code:
Enumeration
  #PR_Sign_Up
  #PR_Sign_In
  #PR_Sign_Out
EndEnumeration

Define url.s = "http://s242132022.onlinehome.fr/game01/"
Define script.s = "testuseragent.php"
Define parameters.s = "?process=" + #PR_Sign_In

Define header.s, buffer.s, *buffer

Define useragent.s = "The quick brown fox jumps over the lazy dog."

InitNetwork()

header = GetHTTPHeader(url + script)
Buffer = StringField(Header, 1, #LF$)

If FindString(Buffer, "200 OK")
  *buffer = ReceiveHTTPMemory(url + script + "/" + URLEncoder(parameters), #PB_HTTP_NoRedirect, useragent)
 
  If *buffer
    Size = MemorySize(*buffer)
    buffer = PeekS(*buffer, Size, #PB_UTF8|#PB_ByteLength)
    FreeMemory(*buffer)
  EndIf
 
  Debug buffer
Else
  Debug "connexion failed"
EndIf

■ Code Php
Code:
<?php
   define("PR_Sign_Up", 0);
   define("PR_Sign_In", 1);
   define("PR_Sign_Out", 2);
   
   define("USER_AGENT_MD5", "e4d909c290d0fb1ca068ffaddf22cbd0");
   
   if (isset($_GET['process']) AND (md5($_SERVER['HTTP_USER_AGENT']) == USER_AGENT_MD5)) {
      switch (($_GET['process'])) {
         case PR_Sign_Up :
            echo "Account create";
            break;

         case PR_Sign_In :
            echo "welcome";
            break;
         
         case PR_Sign_Out :
            echo "bye";
            break;
         
         default:
            echo '-1';
      }
   } else {
      echo "Go away ^-^";
   }   
?>
Le code PureBasic renverra bien "Welcome" alors que le lancement manuel depuis un navigateur par exemple renverra "Go away ^-^"

:arrow: http://s242132022.onlinehome.fr/game01/ ... ?process=1

Merci pour toutes vos suggestions.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 20:40 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8739
J'ai essayé de bypasser ça, pas réussi :)
par contre si les gens ont ton exe, ça sera pas dur de trouver la variable.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 22:33 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
Ar-S a écrit:
si les gens ont ton exe, ça sera pas dur de trouver la variable.
Ils auront l'exe. Mais de cette manière le ou les variables du code seront compliquées à trouver je pense.
Code:
!macro ppublic name{
!if name eq _SYS_StaticStringEnd
!repeat $-_SYS_StaticStringStart
!load zczc from _SYS_StaticStringStart+%-1
!store zczc xor 137 at _SYS_StaticStringStart+%-1
!end repeat
!end if
!public name}
!public fix ppublic
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
  !mov edi,_SYS_StaticStringStart
  !mov ecx,_SYS_StaticStringEnd-_SYS_StaticStringStart
  !@@:
  !xor byte[edi],137
  !inc edi
  !dec ecx
CompilerElse
  !mov rdi,_SYS_StaticStringStart
  !mov rcx,_SYS_StaticStringEnd-_SYS_StaticStringStart
  !@@:
  !xor byte[rdi],137
  !inc rdi
  !dec rcx
CompilerEndIf
!jnz @b


Enumeration
  #PR_Sign_Up
  #PR_Sign_In
  #PR_Sign_Out
EndEnumeration

Define url.s = "http://s242132022.onlinehome.fr/game01/"
Define script.s = "testuseragent.php"
Define parameters.s = "?process=" + #PR_Sign_Up + "&username=falsam&userpassword=fasilatrouver"

Define header.s, buffer.s, *buffer

Define useragent.s = "The quick brown fox jumps over the lazy dog."

InitNetwork()

header = GetHTTPHeader(url + script)
Buffer = StringField(Header, 1, #LF$)

If FindString(Buffer, "200 OK")
  *buffer = ReceiveHTTPMemory(url + script + "/" + URLEncoder(parameters), #PB_HTTP_NoRedirect, useragent)
 
  If *buffer
    Size = MemorySize(*buffer)
    buffer = PeekS(*buffer, Size, #PB_UTF8|#PB_ByteLength)
    FreeMemory(*buffer)
  EndIf
 
  Debug buffer
Else
  Debug "connexion failed"
EndIf
Et bien entendu je ne me contenterais pas d'avoir une phrase de ce type.

Crée un exe avec ce code et cherches les variables avec un outil adéquate :wink:

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 22:40 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8739
Explique ce que fait cet asm 8O stp

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 22:44 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
Ar-S a écrit:
Explique ce que fait cet asm 8O stp
C'est un code de User_Russian (Forum anglophone) donné par CaptainCrunch il y a pas mal de temps sur le chat de PureBasic. Dans le détail je ne te donnerais pas les explications. L'objectif est de cacher le contenu de chacune des variables.

Source http://www.purebasic.fr/english/viewtop ... 52#p468652

On le trouve aussi sur le site de Gally http://www.koakdesign.info/pbfrance/?ur ... wer&val=69

J'avais fait un sujet dessus mais impossible de le retrouver.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sécuriser un script Php
MessagePosté: Mar 24/Avr/2018 22:57 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 17/Déc/2007 12:44
Messages: 1628
En fait cette macro de mémoire crypte tout les textes visibles (variables, constantes, tableaux, ....) avec un xor. Le cryptage ce fait à la volé pendant la compilation et pour le décryptage c'est la même chose mais au lancement de l'application.

Je n'ai pas retrouver le topic de cette macro, mais ça fait déjà quelque temps et je l'utilise depuis j'avous ^^.

Cordialement,
GallyHC

_________________
Image

Image

Image Official site of PureBasic
Image Official site of SpiderBasic

Configuration : Tower: Windows 7 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.62 (x86 et x64)


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 20 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye