Aller au contenu

sugatasei

Melinyen
  • Compteur de contenus

    16
  • Inscription

  • Dernière visite

Informations du profil

  • Genre
    Homme
  • Localisation
    Alsace, Mulhouse

Méthodes de contact

  • Skype
    sugatasei

Visiteurs récents du profil

1 278 visualisations du profil

sugatasei's Achievements

Newbie

Newbie (1/14)

6

Réputation sur la communauté

  1. C'est chouette si le forum repart. Je venais d'arriver sur le forum et puis pouf plus personne ... J'ai du voir un psy (et vendre mes 2 reins) car je croyais que c'était de ma faute ... Côté dev, j'ai un projet personnel PHP de construire une grosse librairie Open source (pas un Framework) avec pas mal de classes et bundles indépendants et qui est voué à être enrichie au fur et à mesure. Si certains sont intéressés, ça peut être sympa dans le cadre d'un partage de bout de code. Après c'est sur que ce n'est pas très rigolo comme projet...
  2. Rien n'empêche de mettre à jour le hash de l'image après la corrompre. Le code PHP contenu dans une image n'est pas interprété si on l'affiche dans un contexte statique. A moins que le serveur soit configuré pour exécuter les images comme du PHP mais dans ce cas autant donner les clés root ce sera plus rapide ^^ Pour exécuter le code contenu dans ton image vérolé, il faut l’exécuter dynamiquement avec un "require/include". Inclure un fichier externe comme ceci est passible de peine de mort est en effet très dangereux car on demande explicitement d’exécuter du code externe ... Il y a des librairies tel que gd ou imagick qui permettent de manipuler les images sans les exécuter. On peut également utiliser readfile pour servir l'image comme une image. Ou si on veut afficher le contenu (pas le lien) directement dans une balise img l'utilisation de base64encode est aussi safe. J'édite pour synthétiser (et corriger mes fautes d'aurttaugraf) : - finfo_open permettra surtout de vérifier que le type de fichier upload est cohérent avec le type de fichier que vous souhaitez utiliser. (pas de docx renommé en pdf si un pdf est attendu). - Recueillir des données externe est toujours source de faille de sécurité (même avec un antivirus). Il faut l'accepter et faire avec :-) La sécurité se passe à la sortie : ne pas exécuter / intérepreté un fichier externe dans votre environnement d’exécution (PHP). Desservez vos media dans un contexte statique (url/img.jpg). Dynamiquement, envoyez le contenu au navigateur sans l’interpréter.
  3. Si tu rames vite c'est pas si loin ^^
  4. Je vois que l'on confond souvent la différence entre une ressource GET et POST. Les requêtes GET peuvent être mise en cache. Les données sont passées dans l'URL et ont une longueur réduite (env 2kb selon le navigateur). Une donnée sensible ne doit jamais être transmise dans un GET même en HTTPS car l'URL n'est pas cryptée. Une requête GET peut être ajouté à l'historique et être mise en favoris. En Ajax et HTML5 l'historique du navigateur est pas automatique mais peut être manipulé. Exemple du chargement partiel des pages de Github. Les requêtes POST ne peuvent pas être mise en cache, dans l'historique, ou en favoris. Les données sont dans l'entête de la requête HTTP et peuvent être cryptées donc totalement sécurisées. Vous pouvez également posté la concaténation de la Bible, du Coran et des écrits du Dalai lama dans la même requête POST si le serveur en face ne rend pas son dernier soupir :-) Si vous hésitez, pour faire simple : Récupération de données : GET Envoi et traitements de données : POST Dans les 2 cas n'oubliez pas de vous protéger contre les failles de sécurités : Tuto complet de Mars (et ça repart) : Simple guide line :
  5. Je vous propose un petit bout de code qui vous permettra de synchroniser vos données sur une même page et sans effort. L'exemple qui va suivre utilise une nouvelle méthode HTML5 de l'objet standard : Object.observe Le framework Angular JS est build autour de ce genre de technique. C'est un framework qui a une approche MVC et non plus une approche DOM. En pratique on ne mélange pas les frameworks MVC et DOM mais sur ces derniers, ce code vous permettra un peu plus de dynamisme !!! Le code commenté est ici : http://jsfiddle.net/3Lp1g4ck/1/
  6. La résolution des recherches ne passent plus chez moi :-( Je clique sur terminer et ça réactualise la page comme si rien n'est fait. J'ai encore tout cassé ? Sinon la colonisation semble bien se passer. J'ai bientôt ma 5ème base !!!
  7. J'ai perdu une partie de mes troupes. Vu la masse que j'ai envoyé ton armée a du être démolie et le rapport a peut être une erreur ...
  8. Allemagne ou France ... ça dépend des gouvernements ^^
  9. BIen le test ultime : J'ai balancé 1000 unités sur Cegd. Résultat j'ai gagné mais j'ai tout perdu. Mai j'ai gagné NA !!!
  10. J'ai vu qu'il y a des Epitechiens sur le fofo :-) Je suis dans une asso de lanparty et on organise chaque année une LAN à Epitech Strasbourg. La prochaine est bientôt : 24-26 avril. (http://zilat.net/) Par hasard vous n'y serez pas ?
  11. Chouette, un de mes sujets préféré !!! - Pour les failles d'injection SQL, attention car la librairie mysql est déprécié et sera supprimé très probablement dans la futur version majeur de PHP. PDO et mysqli pour ceux qui ne souhaitent pas sortir l'artillerie lourde, fournit une meilleure protection grâce aux requêtes préparées. - Pour les failles XSS vous pouvez aussi utiliser la fonction filter_var. Cette fonction possède un tas d'options pour filtrer et vérifier vos données. Pour se protéger des failles xss : filter_var($data, FILTER_SANITIZE_STRING) Remarque : Ne pas inclure ce filtre automatiquement sur tous vos paramètres HTTP. La faille XSS est une faille qui agit en sortie, pas en entrée. Ne filtrer donc que les variables que vous utilisez. Sinon on peut s'amuser à envoyer des requètes HTTP avec de très nombreux paramètres POST pour essouffler votre serveur qui va tout filtrer à chaque page :-) Et si vous vous attendez à un int, bool, float. Un simple cast fera l'affaire !!! - Ensuite il y a les failles CSRF (soumission de formulaire non contrôlé) : Vous pouvez créer un système de clé publique, clé privé (identifiant de la session) avec password_verify et password_hash. Vous collez la clé privée en session et la clé publique dans un input hidden de tous vos formulaires. Lors du traitement du formulaire, vous pourrez alors tester si la cohérence des clés pour vérifier que le formulaire est appelé depuis une page de votre site et non pas d'un bot. - Pour les formulaires d'upload : ne pas faire confiance à l'extension du nom de fichier ou du type contenu dans la superglobale $_FILE. Voir : finfo_open(FILEINFO_MIME_TYPE);
  12. sugatasei

    effectuer une requête POST

    Pour complèter le topic, je vous propose une méthode alternative : CURL Avantages : beaucoup plus rapide surtout pour les gros fichiers plus d'options : possibilité de faire des requètes en https signées par certificat. Inconvéniant : la librairie php5_curl doit être dispo sur votre serveur. Je vous partage un exemple : <?php class Post_curl { /* Attributs * ******************************************************************************************** */ private $url = NULL; private $data = NULL; /* Constructeurs et assesseurs * ******************************************************************************************** */ /** * Constructeur * @param string $url * @param array $data */ public function __construct($url = FALSE, $data = FALSE) { if ($url) { $this->setUrl($url); } if ($data) { $this->setData($data); } } /** * Set Url * @param string $url */ public function setUrl($url) { $this->url = trim($url); } /** * Set data * @param array $data */ public function setData($data) { if (is_object($data)) { $this->data = get_object_vars($data); } else { $this->data = $data; } $this->data = $this->encodeData($this->data); } /* Methodes publiques * ******************************************************************************************** */ /** * Envoi de la requete * @return mixed : Resultats de la requete */ public function send() { $return = FALSE; if (is_null($this->url)) { throw new Exception("URI not found"); } else if (is_null($this->data)) { throw new Exception("Data not found"); } else { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->url); curl_setopt($ch, CURLOPT_POST, $this->rcount($this->data)); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($this->data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $return = curl_exec($ch); } return ($return) ? $return : curl_error($ch); } /* Methodes privees * ******************************************************************************************** */ /** * Fonction d'encodage des caracteres * @param array $data * @return array */ private function encodeData($array) { foreach ($array as &$value) { if (is_array($value)) $this->encodeData($value); else if (!mb_detect_encoding($value, 'UTF-8', true)) $value = utf8_encode($value); } return $array; } /** * Nombre d'elements d'un tableau recursivement * @param array $array * @return int */ private function rcount($array) { $count = 0; if (is_array($array)) { foreach ($array as $value) { if (!is_array($value)) { $count++; } else { $count = ($count + $this->rcount($value)); } } } return $count; } } /* End of file Post_curl.class.php */
  13. Hello, Ravi de voir des joueurs de Heroes !!! Je n'était pas fan des moba. Souvent trop élitiste, prise en main compliqué à cause du système d'items. Parties trop répétitives et longues. Heroes change la donne avec des cartes plus dynamiques et plus variés. Pas besoin de bash du mob derrière les tranchés pendant 20 minutes avant de pouvoir broyer des crânes. L'action est plus rapide et forcée avec les objectifs des cartes. Les gameplay sont variés, pas de pay2win. En jouant un peu avec le système de quêtes, on débloque assez vite des personnages supplémentaires. Assez avec ceux proposés chaque semaines pour se divertir. Et les héros les moins chère sont pas les moins bons ^^. Le concept d'xp partagé, est génial. Jouer support / contrôle est bien plus intéressant que dans les autres jeux du genre et on ne se retrouve pas à la traîné niveau xp.
  14. J'ai faim ! Il y a des cookies maison dans la cuisine mais c'est loin ... Il faut que je dresse mon chat pour me réapprovisionné ...

    1. Freegos

      Freegos

      Si t'y arrives, tu devrais cloner ton chat :D

×
×
  • Créer...