Cacher URL sur survole de bouton

Eléphant du PHP | 101 Messages

28 juin 2010, 15:35

Bonjour à tous,
J'aimerai savoir si il est possible de cacher l'url qui s'affiche en bas à gauche dans la barre grise lorsque je survole le bouton qui appel justement sur cette page?
Faut-il écrire quelque chose dans le fichier ou autre?
Voyez vous ce que je veux faire?

Eléphant du PHP | 50 Messages

28 juin 2010, 16:47

Bonjour,

tu peux ajouter un onclick="this.href='<ton autre url>'" dans la balise a

exemple

Code : Tout sélectionner

<a onclick="this.href='http://www.google.fr'" href="http://www.test.com" target="_blank">test</a>

ViPHP
ViPHP | 3607 Messages

28 juin 2010, 19:41

On peut savoir pourquoi?

ViPHP
AB
ViPHP | 5818 Messages

28 juin 2010, 19:45

On peut savoir pourquoi?
:lol: J'ai dans l'idée que c'est pas par souci de clarté :wink:

Eléphant du PHP | 101 Messages

29 juin 2010, 10:15

C'est juste pour pas qu'on sache quelle page j'appelle, car j'ai peur des injections sql

ViPHP
ViPHP | 3607 Messages

29 juin 2010, 10:22

Et bien concentre toi d'abord sur la protection au sein de tes scripts...
Tout ce que tu arriveras à faire c'est cacher l'url pour des néophytes mais toute personne un tant soit peu au courant pourra très simplement savoir quelle page a été appelée...

Eléphant du PHP | 101 Messages

29 juin 2010, 10:27

Par exemple j'appelle "mapage.php" (dans laquelle il y a une connexion a ma base, et un simple select, qui retourne une valeur et ensuite je fait une redirection) quels sont les risques? Quelqu'un peut-il accéder à ça "$link = mysqli_connect("serveur", "login", "mdp", "DB");"

Eléphant du PHP | 50 Messages

29 juin 2010, 14:12

Ce n'est clairement pas en "cachant" les url avec ce type d'astuce que tu te protegeras des sql-injection.
(Ne confonds tu pas cacher les url par l'url rewitting ?)

Comme dit "jojolapine" : "concentre toi d'abord sur la protection au sein de tes scripts"

Concernant ta page mapage.php, si ta requête est construite à partir de donnée extérieurs (exple post ou get) et quelles ne sont pas traitées il y a des risques.
Et dans ton fichier à moins d'ouvrir les droits des fichiers (exple 777) on ne pourra accéder à "$link = mysqli_connect("serveur", "login", "mdp", "DB");"

Eléphant du PHP | 101 Messages

29 juin 2010, 14:15

J'ai mis mon fichier en 705 ... c'est bon? Et comment les traiter avant les données?

ViPHP
AB
ViPHP | 5818 Messages

29 juin 2010, 16:16

1 / Dans tes requêtes prend l'habitude de systématiquement utiliser mysqli_real_escape_string ou passes par des requêtes préparées mais la première solution est déjà efficace.

2 / Ensuite évites de trimbaler tes logins et mots de passe dans toutes les pages. Fait plutôt un include ou un require vers un répertoire/fichier où tu auras tes identifiants de connexion. ça évite de les voir dans tous tes scripts et moins on les voit moins tu as de chances que quelqu'un les regarde quand par exemple tu es entrain de coder.

Sinon niveau sécurité on ne peut pas télécharger le contenu d'une page php (je veux dire le script) à moins d'un piratage du serveur et dans ce cas cela regarde l'admin système, ou d'un trou de sécurité dans un de tes scripts :

3 / Evidemment si tu proposes des fichiers en téléchargement il faut impérativement contrôler la liste de fichiers autorisés au téléchargement.

4 / Pour les includes ou require idem, mais souvent on peut écrire le lien en dur donc pas de souci dans ce cas.

5 / Et puis à chaque fois que tu fais afficher du code dans la page (echo...) protèges la chaine à afficher par htmlspecialchars ou htmlentities

6 / Concernant des fichiers qui n'ont pas besoin d'être appelés depuis l'extérieur (fichier de connexion à la bdd par exemple) mets les dans un répertoire protégé par un fichier .htaccess avec la simple mention : deny from all

Voilà si tu respectes déjà tous ces points tu es sur la bonne voix :wink:

Eléphant du PHP | 101 Messages

29 juin 2010, 16:40

Merci beaucoup c'est très gentil de ta part.
Alors pour le première solution j'ai déjà un soucis. Comme dans ma requête select je fais déjà une vérification avec une variable qui peut contenir "/", et quand il y a ça, je ne trouve pas mon produit...

ViPHP
AB
ViPHP | 5818 Messages

29 juin 2010, 17:12

Ben c'est parce que ton code n'est pas bon ailleurs. Par exemple il faut utiliser mysqli_real_escape_string à la place d'un addslashes mais pas en plus (donc vires le addslashes et utilises mysqli_real_escape_string).

Si c'est pas ça, montres ta requête.

Eléphant du PHP | 101 Messages

29 juin 2010, 17:23

$prod_sku = mysql_real_escape_string($_GET["var"])
$link = mysqli_connect("", "", "", "");
$req = "SELECT product_id FROM jos_vm_product WHERE product_sku ='".$prod_sku."';";
$id = mysqli_query($link , $req)or die (mysqli_error($link));
$id_prod = mysqli_fetch_array($id);
$url = "http://wayofgamer.com/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=".$id_prod[0]."&option=com_virtuemart";

header('Location:'.$url);

ViPHP
AB
ViPHP | 5818 Messages

29 juin 2010, 17:42

$prod_sku = mysql_real_escape_string($_GET["var"])
$link = mysqli_connect("", "", "", "");
$req = "SELECT product_id FROM jos_vm_product WHERE product_sku ='".$prod_sku."';";
$id = mysqli_query($link , $req)or die (mysqli_error($link));
$id_prod = mysqli_fetch_array($id);
$url = "http://wayofgamer.com/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=".$id_prod[0]."&option=com_virtuemart";

header('Location:'.$url);
Bon, c'est que ton serveur doit être configuré "à l'ancienne" c'est à dire avec magic_quote activé. Donc essaies d'utiliser cette fonction qui retourne la bonne valeur quelque soit la configuration du serveur :
function Verif_magicquotes ($chaine)
{
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);

return $chaine;
} 

$prod_sku = Verif_magicquotes($_GET["var"]);

$link = mysqli_connect("", "", "", "");

$prod_sku = mysqli_real_escape_string($link, $prod_sku);
//etc..
Voilà la première étape devrait être franchie :wink:

(Faits attention d'utiliser mysqli_real_escape_string avec l'identifiant de connexion)

Eléphant du PHP | 101 Messages

29 juin 2010, 17:55

Merci beaucoup je finis avec ça :
include('conf.php');
$cfg = new Conf();

$prod_sku = Verif_magicquotes($_GET["var"]);

$link = mysqli_connect($cfg->host, $cfg->user, $cfg->password, $cfg->db);

$prod_sku = mysqli_real_escape_string($link, $prod_sku);

$req = "SELECT product_id FROM jos_vm_product WHERE product_sku ='".$prod_sku."';";
$id = mysqli_query($link , $req)or die (mysqli_error($link));
$id_prod = mysqli_fetch_array($id);
$url = "http://wayofgamer.com/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=".$id_prod[0]."&option=com_virtuemart";

header('Location:'.$url);

function Verif_magicquotes ($chaine)
{
if (get_magic_quotes_gpc()) 
	$chaine = stripslashes($chaine);

return $chaine;
}
Et pourquoi il faut mettre l'identifiant de connexion avec "mysqli_real_escape_string"?
En tout cas ça fonctionne ^^ merci beaucoup