2011-06-23 3 views
4

Supposons que j'ai créé un service Web (DataOperation.asmx) dans mon application Web. Maintenant j'appelle ce webservice à travers ma page .aspx en utilisant JQuery. comme:Comment sécuriser mes webservices via les appels JQuery/Javascript?

$.ajax({ 
type: "POST", 
url: "../../DataOperation.asmx/someMethod", 
cache: false, 
data: "param1=" + p1, 
async: false, 
success: function(msg) { 

} 
}); 

Maintenant, ma question est, si quelqu'un voit ce nom webservice et le nom de webmethod en enquêtant sur le code source de la page html, puis il peut l'utiliser de partout et peut mettre une entrée malveillante en appelant ces services Web. Alors, comment dois-je protéger ces services Web des autres et en même temps je devrais être capable de l'utiliser avec des appels JQuery/Javascript.

Tout le monde sait que la réponse serait appréciée.

Cordialement, Haidar

+0

Vos pages aspx et asmx sont-elles diffusées à partir de la même application Web? –

+0

Oui, il est servi sur la même application Web. – Haidar

+0

** N'utilisez jamais XHR synchrone ('async: false'). C'est une expérience utilisateur terrible, et il n'y a pas de raison valable d'utiliser l'utiliser. – josh3736

Répondre

2

Le scénario est que nous avons SOA Suite installée à notre fin et nous avons déployé un processus qui est accessible via

http://host:port/service/someService

Maintenant, notre exigence est de savoir comment sécuriser cette lien qui appelle le service en utilisant https afin que la nouvelle demande apparaisse comme

https://host:port/service/someService

Encore une fois je voudrais que vous passiez par ce lien pour avoir une idée sur la clé et le certificat.

http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html

À partir de cette note, je va générer une clé

ouvrir une fenêtre de commande et naviguez jusqu'au répertoire jdk/bin et une commande

keytool -genkey -alias Arpit -server - dname "CN = Arpit, OU = intégration O = Oracle L = Bangalore, S = Karnataka, C = IN" -keyalg RSA -keypass welcome1 -storepass welcome1 -keystore arpit.keystore

Il devrait être comme

Une fois cette commande exécutée, vous trouverez une clé avec le nom arpit.keystore créé dans le même dossier que celui où vous l'avez exécuté.

Vous pouvez copier le arpit.keystore dans le $ ORACLE_HOME/j2ee/home/config

Nnow à nouveau

  1. Copie default-web-site.xml pour sécuriser Web-site.xml Modifiez le site Web sécurisé.xml: 2.1. Changer la balise de site Web en changeant le port en 4443 et en ajoutant l'élément secure = "true" 2.1. Ajoutez l'élément ssl-config et pointez-le sur le nouveau fichier de clés créé. Le fichier ressemble à:

... ...

  1. Importez le nouveau site Web dans votre instance OC4J en éditant le ORACLE_HOME $/j2ee/home/fichier server.xml. Vous devez ajouter ou remplacer l'étiquette du site Web. Dans

... ...

Depuis que nous avons copié le fichier par défaut Web site, toutes les applications sont disponibles via HTTP et HTTPS

maintenant commencer OC4J et Testez le port HTTPS.

Il est à work.This est pour conteneur autonome

+0

Pouvez-vous me donner quelques exemples dans .net? – Haidar

+0

1) http://forums.asp.net/t/1643729.aspx/1 et 2) http://www.codeproject.com/KB/WCF/9StepsWCF.aspx – selladurai

1

Je le fixer en vous assurant que la demande est de la même session que la page est servi. Vous pouvez le faire en publiant un cookie signé lorsque vous revenez la page qui contient ce javascript qui va rappeler dans votre service Web. Lorsque votre page effectue l'appel ajax, elle inclut ce cookie signé, que vous pouvez valider dans votre méthode Web avant de renvoyer les résultats. Pour éviter l'usurpation de cookies, stockez un tokenID unique dans votre session et intégrez cette partie tokenID à votre cookie. Si les tokenID ne correspondent pas, ne pas traiter la méthode web (juste renvoyer une erreur).

Questions connexes