|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
[C#] Sicurezza nelle comunicazioni Client/Server - SOAP o RESTFull API
Salve,
devo sviluppare un progetto Client/Server in C#, vi spiego: Diciamo che ho 500 PC-Client i quali devono inviare e ricevere piccole comunicazioni al Server, pochi byte a comunicazione. Nei Client gira Windows 10 IoT Enterprise, Il software è un applicazione Win Form in C#, per l'interfaccia grafica. La connessione dei Client è fatta con una normalissima ADSL - (IP Dinamico). Il Server è in PC ospitato in Housing(Aruba) dove gira Windows. In queste comunicazioni il Client invia al Server anche dati di carte di credito, dove nel Server si effettuano le transazioni bancarie tramite le API del sistema di pagamento. Il punto è: - serve una connessione sicura - serve una comunicazione cifrata - serve identificare la comunicazione per sapere se ha il permesso di entrare. Inizialmente per soddisfare quei punti avevo pensato ad un Web Service SOAP. Poi mi sono documentato sulle API RESTFull Ora non sono deciso su come procedere. Cosa ne pensate? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
REST o SOAP, il punto è che quella roba dev'essere cifrata e dev'esserci un meccanismo per la verifica delle identità.
Per l'identificazione si può usare la crittografia a chiave asimmetrica, cioè usarla durante la prima connessione della sessione, per poi assegnare una chiave simmetrica ai client. Quello che avviene con https in pratica. |
|
|
|
|
|
#3 | |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21939
|
Quote:
imho la soluzione migliore è fare delle web api su protocollo https così per la sicurezza ti affidi a tls
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Quote:
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Il problema è questo, se riesco a capire che SOAP per la mia applicazione non è troppo pesante, vado con quello.
Come posso capire se è eccessivamente "Pesante" o "Lento", che calcoli devo fare? Per lento si intende che risponde dopo 5 secondi.... o altro?? Per pesante si intende su una linea ADSL da 2Mb con 5 chiamate ogni 10 minuti..., o altro?? Ultima modifica di race2 : 15-05-2018 alle 12:54. |
|
|
|
|
|
#7 | |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21939
|
Quote:
https ti garantisce che la connessione avviene su un canale sicuro (scambio di chiavi simmetriche mediante protocollo asimmetrico ) poi i dati che mandi li gestisci come vuoi es mando un json contenente i dati cifrati secondo un algoritmo simmetrico con chiave univoca per il client
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Quote:
|
|
|
|
|
|
|
#9 | |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21939
|
Quote:
la scelta del protocollo è più una questione architetturale e diventa difficile scegliere senza avere tutti gli elementi
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Quote:
Diciamo che REST inviando pochissimi byte ha la medesima velocità di una chiamata ad una pagina web, Come posso capire quanta è la lentezza di SOAP?? Tutti dicono che è molto lento e inoltre ci vuole pure una banda adeguata... Ma come è possibile che una ADSL da 1Mb non soddisfi la portata delle chiamate anche se sono 10 al secondo ?? Mi sta bene la lentezza di risposta che è dovuta all'elaborazione nel server, ma la banda adeguata!!! |
|
|
|
|
|
|
#11 | |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21939
|
Quote:
le api rest fanno chiamate http quindi il protocollo è abbastanza pesante e soap è abbastanza similare (protocollo testuale anche in soap json vs xml ma siamo li ) i protocolli leggeri sono altri ad esempio per iot si usa tanto mqtt
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Quote:
Se REST e SOPA diciamo che siamo li....., perchè non fare come mi hai detto qui nella QUOTE, niente SOAP e niente REST, un semplice invio di dati json cifrati e lato Server uno script che "accoglie, elabora e risponde" ai i dati inviati. I miei invii sono roba tipo cosi: "id=4d34g234hj&im=200&ty=50&q=42ui23i4234y3yujhjh565mm5n" Tutto qui, ogni chiamata al server invio massimo questa roba, altrimenti anche la metà. |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Io in passato ho utilizzato i servizi ASMX, Client può gestire il servizio come semplici chiamate ai metodi delle classi.
Ho letto che è diventato obsoleto, è vero? |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Praticamente ti basta il POST del HTTP/HTTPS. Si potrebbe usare il GET, ma è preferibile il POST in un contesto cifrato, in quanto riduce a zero i possibili leak e consente ( in ogni caso ) maggiore flessibilità nel numero e dimensione dei dati.
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Quote:
1) Quale è la differenza tra creare una comunicazione Client/Server con api oppure con https+POST con stringa cifrata? 2) Quindi come ha detto fazz sopra:scambio di chiavi simmetriche mediante protocollo asimmetrico 3) tu che ne pensi dei web services asmx, sono obsoleti? Quale è il tuo commeto a riguardo? |
|
|
|
|
|
|
#16 | ||
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
L'uso di HTTP per quel tipo di servizi va sotto l'acronimo REST ( o RESTful ). E considera che avrai a disposizione gazillioni di librerie e strumenti che implementano lo standard. Quote:
Humm obsoleti non direi. Mi pare si usino ancora oggi. Che poi MS abbia implementato WCF come successore di ASMX è vero. Ed è vero che WCF è più flessibile, infatti sfrutta altri protocolli oltre a HTTP. Ma non vedo che differenza possa fare nel tuo caso. |
||
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Solo di praticità,
non so se hai mai utilizzato ASMX, nel Client dopo la dichiarazione della nuova istanza del servizio, gesti tutti i suoi metodi pubblici come se tu avessi le classi nella soluzione del tuo Client, chiami i metodi, passi i parametri, etc... è un po come estendere e/o implementare il Client con classi/metodi del client stesso, in realtà utilizzi quelle del web service. Ho detto che non chiedevo più nulla ma questa è veramente l'ultima: Ma se il web service fosse sviluppato in PHP sarebbe in grado di gestirlo un Client RESTFull in C# ? |
|
|
|
|
|
#18 | |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21939
|
Quote:
secondo me se già conosci c# il web server ti conviene farlo con un progetto web api direttamente in c# se vedi gli esempi è di una banalità assurda e hai un linguaggio nettamente più potente di php e con la possibilità di fare debug e passo passo della parte server
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
Che poi alla fin fine REST usa gli URI e i metodi del HTTP. In PHP tu hai $_SERVER['REQUEST_METHOD'] per sapere che metodo è stato invocato e $_SERVER['PATH_INFO'] per catturare l'URI. |
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Quote:
https://developers.coinbase.com/docs...bitcoin-wallet Apepna ho la documentazione vedrò come procedere. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:02.




















