12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- // Librairie de fonctions de sécurité de l'application web.
- // Encryptage d'une chaîne de caractères
- // Décalage 23
- function strEncryption($valeurzchaine) {
- $retour = "";
- for ($x = 0;
- $x < strlen($valeurzchaine);
- $x++) {
- $valeurcible = chr(ord(substr($valeurzchaine, $x, 1)) + 23);
- $retour .= $valeurcible;
- }
- return $retour;
- }
- // Décryptage d'une chaîne de caractères
- // Décalage 23
- function strDecryption($valeurzchaine) {
- $retour = "";
- for ($x = 0;
- $x < strlen($valeurzchaine);
- $x++) {
- $valeurcible = chr(ord(substr($valeurzchaine, $x, 1)) - 23);
- $retour .= $valeurcible;
- }
- return $retour;
- }
- // Fonction pour recueillir les clefs et leur valeurs de la méthode POST
- function getPostVars() {
- $queryString = "";
- if (filter_input_array(INPUT_POST)) {
- foreach (filter_input_array(INPUT_POST) as $clef => $valeur) {
- $kv[] = "r$clef=$valeur";
- }
- $queryString = join("&", $kv);
- } else {
- $queryString = filter_input(INPUT_SERVERm, 'QUERY_STRING', FILTER_SANITIZE_STRING);
- }
- return $queryString;
- }
- // Fonction de filtre pour les champs passés à une requête SQL (SQL injection)
- function antiInjection($souschaine) {
- $banlist = array(
- "insert", "select", "update", "delete", "distinct", "having", "truncate", "replace", "and",
- "handler", "like", "as", "or", "procedure", "limit", "order", "group", "asc", "outfile", "desc",
- "load_file", "exec", "||", "|", "&", "=", "--", "javascript"
- );
- $tablo = array();
- if (empty($souschaine)) {
- return null;
- }
- $souschaine2 = stripslashes($souschaine);
- if (is_array($souschaine2)) {
- return array_map(__METHOD__, $souschaine2);
- }
- if (!empty($souschaine2) && is_string($souschaine2)) {
- return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"),
- array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'),
- $souschaine2);
- }
- if (strpos($souschaine2, " ") === false) {
- $tablo[0] = $souschaine2;
- } else {
- $tablo = explode(" ", $souschaine2);
- }
- // TODO permettre les mots qui contiennent le mot banni
- // ex: meteore contient le mot «or».
- // SG 2023-10-28
- foreach ($tablo as $cle => $element) {
- foreach ($banlist as $elementban) {
- $pos = strpos(trim($element), $elementban);
- if (!($pos === false) && strlen($element) == strlen($elementban)) {
- $cle = "";
- }
- }
- }
- $retourchaine = trim(implode(" ", $tablo));
- if (strlen($retourchaine) == 0) {
- return null;
- } else {
- //Remplacer l'apostrophe par son équivalent HTML
- return str_replace("'", "'", trim($retourchaine));
- }
- }
|