2009-04-10 4 views
0

J'essaie d'obtenir un peu plus d'informations sur une question que je posais sur un autre threadPrévention des scripts PHP utilisés dans une application iPhone d'accès étant via un navigateur web

Fondamentalement, j'utilise cette méthode pour passer des paramètres à une script php qui renvoie les valeurs d'un serveur:

NSString *urlstr = [[NSString alloc] initWithFormat:@"http://www.yourserver.com/yourphp.php?param=%d", paramVal]; 
NSURL *url = [[NSURL alloc] initWithString:urlstr]; 
NSString *ans = [NSString stringWithContentsOfURL:url]; 
// here in ans you'll have what the PHP side returned. Do whatever you want 
[urlstr release]; 
[url release]; 

Je pose alors la question. Comment sécurisez-vous 'http://www.yourserver.com/yourphp.php'? Vous pouvez facilement naviguer vers le même script (si vous connaissez le chemin) et passer les paramètres que vous voulez. Est-ce que je manque quelque chose?

Répondre

0

Non, vous ne manquez rien. Eh bien, autre qu'un cadre d'autorisation. :)

PHP n'est pas la meilleure plateforme pour sécuriser une application web, mais vous pouvez utiliser Pear's Auth library. peut-être

2
$_SERVER['HTTP_USER_AGENT']; 

Montrera vous accès, à l'agent utilisateur, mais les agents utilisateurs sont certainement spoof-mesure, votre seule autre option serait de verrouiller le param en vérifiant certains caractères que vous connaissez ne sera jamais passé à travers elle, ajouter un autre (factice) peram juste pour un peu de sécurité supplémentaire. À part cela, il n'y a vraiment pas d'autre moyen de le réduire.

+1

L'agent utilisateur et les paramètres factices n'aideront pas du tout, car il est trivial de les renifler et de les utiliser, par exemple, dans un navigateur Web. Vous voulez quelque chose comme ce que TK a répondu. –

+0

seuls les utilisateurs avancés savent comment tromper l'utilisateur-agent, en ajoutant cette couche de sécurité vous réduisez les chances d'utilisateurs indésirables d'accéder à votre script php – perrohunter

2

Vous pouvez utiliser un MAC des données sortantes à envoyer. Cela évite d'utiliser un framework d'authentification full blow (et des sessions d'ailleurs).

Ceci est cependant vulnérable à une attaque répétée, mais vérifierait certainement que le message provenait de votre application.

http://en.wikipedia.org/wiki/Message_authentication_code

0

Valider votre entrée sur le côté de PHP; Si une entrée est valide, générez un mot de passe et transmettez-le avec le paramètre à valider avant de prendre une action. Leur mot de passe doit être le plus temporaire possible, idéalement basé sur un nonce du serveur salé avec certaines données générées par l'application (c'est-à-dire non stockées) et que le serveur connaît à l'avance.

Questions connexes