2017-09-29 2 views
0

J'ai hérité d'une application Web relativement faible sur le trafic dans laquelle le site Web principal est accessible sur intranet, mais il reçoit ses données d'un service wcf qui fonctionne sur le même serveur accessible uniquement via localhost. Il m'a été expliqué que cette conception était implémentée comme mesure de sécurité - essentiellement pour s'assurer qu'aucune entité externe au serveur ne puisse potentiellement avoir accès à notre service et donc à nos données. Cependant, la base de données est généralement située sur un serveur différent. Cela a fonctionné pendant un certain temps, mais je cherche des moyens d'améliorer les performances et il semble que l'exécution de requêtes sur le service wcf et la sérialisation de la réponse pour la transmission, etc., est une perte de temps - je voudrais il suffit d'accéder à la base de données directement depuis mon application web.Est-ce que j'obtiens une sécurité supplémentaire en exécutant le service wcf sur localhost?

Cette conception actuelle est-elle logique? Ne serait-il pas préférable dans l'ensemble (pour la sécurité et la performance) que mon site accède directement à la base de données et renforce la sécurité entre l'application et la base de données?

Merci d'avance.

Rusty

Répondre

0

Je ne sais pas si j'ai la grande image de votre description. Cependant, il est courant que des applications Web consomment du contenu de plus d'un service pour former une interface graphique avec l'utilisateur final. Avec la croissance de SOA, cela permet une intégration rapide pour combiner les sources (des services) et produire une sortie riche. On appelle cela Mashup

Cela aussi, entre autres, améliore la sécurité des services de back-end car ils ne sont accessibles par le serveur d'applications back-end, et non pas directement frontal client

Ainsi, à partir d'une architecture perspective, il semble que votre application essaie de le faire. Avoir les services sur le même serveur, et seulement consommés par le serveur local (localhost) est un choix pris pour empêcher que le serveur d'application s'exécutant sur la même machine ait accès. Cela pourrait être dû à un manque d'un meilleur contrôle sur l'accès au réseau et réseau de zonage

vit votre base de données sur un autre serveur, où il pourrait y avoir une autre mesure mise en place pour sécuriser le trafic et l'accès

En général, la mise en œuvre de la sécurité nécessite un budget, comme toute autre exigence fonctionnelle et non fonctionnelle. Cela est généralement associé au risque auquel vous êtes exposé et à la sensibilité de l'information. Plus tôt la sécurité est intégrée dans l'architecture globale, mieux c'est.

L'accès à la base de données à partir de votre application Web nécessite des pratiques d'excellence pour se protéger contre les nombreux risques d'intrusions et de vulnérabilités. En général, votre client web ne doit pas accéder directement à la base de données, et doit toujours utiliser les services côté serveur et la validation pour cela, que ce soit via wcf ou autre

+0

Merci pour cette réponse, donne moi un peu de réflexion sur. Je suis maintenant responsable de cette application, donc je dois être capable de comprendre l'architecture actuelle pour pouvoir la supporter ou la mettre au rebut. On dirait que ce n'est pas aussi inhabituel d'une configuration que je le pensais. Une précision cependant est que mon application Web principale (qui obtient pour le moment ses données du service wch localhost) est un * site Web * fonctionnant sur le serveur dans IIS. Est-ce vraiment dangereux de donner à ce site un accès direct à la base de données? – rusty

+0

En implémentant les meilleures pratiques de code, vous pouvez minimiser le risque. Jetez un oeil à: http://www.peterviola.com/blocking-sql-injection-with-iis-request-filtering/ –