J'ai un service Web interne qui expose quel taux payer pour une tâche donnée. À l'heure actuelle il y a un seul service qui expose:Exposer seulement quelques méthodes de service à travers DMZ
- Devises - Ajouter, Modifier, Supprimer, SelectById
- Pays - Ajouter, Modifier, Supprimer, SelectById
- Tâches - Ajouter, Modifier, Supprimer, SelectById
- Tarifs - Ajouter, Modifier, Supprimer, SelectAll, SelectById - (* 1) Rechercher
- données de référence (Devises, pays, utilisateurs, tâches ...) - SelectAll
- utilisateurs - Ajouter, Modifier, Supprimer, SelectById
(* 1) Cela prend juste et exécute une requête SQL (je sais que c'est un cauchemar d'injection SQL! Je n'ai pas écrit ceci)
On m'a demandé de revoir le service avant que quelqu'un décide de l'exposer à travers nos pare-feu dans la DMZ et même s'ils me disent que les règles du pare-feu préviennent les attaques, je refuse d'autoriser ce service. être exposé. L'application qui veut l'information veut seulement l'accès en lecture seule aux données et je vais suggérer que nous produisons une façade beaucoup plus sûre (probablement en utilisant WCF) qui expose seulement l'information requise et planifie un complet révision du système.
Ma suggestion est de décomposer le service en une série d'interfaces spécifiques pour:
- Devises
- Pays
- Tâches
- Tarifs
- Utilisateurs
Cependant, étant donné que je n'ai besoin que de données en lecture seule dans t La DMZ aurait-elle intérêt à décomposer chaque service en un contrat de service en lecture seule et un contrat de service en écriture, par ex. pour les devises:
public interface ReadOnlyCurrencyService
{
IEnumerable<Currency>GetAll();
Currency GetById(int id);
}
public interface CurrencyService : ReadOnlyCurrencyService
{
void Add(Currency currency);
void Update(Currency currency);
void Delete(Currency currency);
}
public class CurrencyServiceLAN : CurrencyService
{
}
De cette façon, nous pouvons exposer uniquement les parties en lecture seule du service de change comme un point final à travers la frontière DMZ-LAN, mais en utilisant le même service exposer les parties inscriptibles du service à l'intérieur du réseau local.
me demandais simplement si quelqu'un avait des pensées/commentaires/approches différentes
Merci pour la réponse. Certes, WCF DS est utile pour les opérations simples CRUD que j'ai, il faudra regarder cela et voir si cela correspond au modèle de données. –