2010-04-20 5 views
0

Quelle série d'étapes serait nécessaire pour encoder en toute sécurité et passer une chaîne d'un HTML href en utilisant javascript pour construire le lien vers un programme php.encoder en toute sécurité et transmettre une chaîne d'un lien html au programme PHP

en javascript mis en place URL

// encodes a URI component. 
path = "mypgm.php?from=" + encodeURIComponent(myvar) ; 

en php:

// get passed variables 
$myvar = isset($_GET['myvar']) ? ($_GET['myvar']) : ''; 

// decode - (make the string readable) 
$myvar = (rawurldecode($myvar)); 

// converts characters to HTML entities (reduce risk of attack) 
$myvar = htmlentities($myvar); 

// maybe custom sanitize program as well? 
// see [http://stackoverflow.com/questions/2668854/php-sanitizing-strings-to-make-them-url-and-filename-safe][1] 
$myvar = sanitize($myvar); 
+2

Où cette chaîne va-t-elle être utilisée ...? – deceze

+0

Que voulez-vous accomplir? Vous utiliserez différentes fonctions si vous souhaitez utiliser la variable GET en tant que chemin de fichier ou variable de requête SQL. – zneak

Répondre

0

Je pense que les deux premières lignes devraient être bien. Vous utiliseriez htmlentities si et quand vous deviez le sortir en texte.

0

regardant votre code, tout ce que vous vraiment besoin est le suivant:

$myvar = !empty($_GET['myvar']) ? $_GET['myvar'] : ''; 

Au-delà, PHP décode automatiquement URL. Personnellement, je préfère faire mon htmlentities() ou htmlspecialchars() quand je vais aux données de sortie, à savoir:

<?php echo htmlentities($mydata); ?> 

La seule autre fois que vous avez besoin spécifiquement pour échapper ou désinfectez données si vous construisez une requête SQL:

$data = mysql_real_escape_string($mydata); 
$query = "SELECT * FROM table WHERE stuff = '$mydata'"; 

Cela empêchera l'injection SQL. Sauf si vous formatez une entrée utilisateur ou effectuez une validation, il n'est pas absolument nécessaire d'effectuer un autre type de nettoyage.

Espérons que cela aide!

Questions connexes