Innanzitutto, vorrei ringraziare l'autore per questo articolo. Penso che questo argomento sia rilevante soprattutto per quei trader che hanno già i loro sviluppi originali e cercano di proteggere la loro proprietà intellettuale. Il modello di trasmissione dei segnali di trading attraverso il server si adatta perfettamente a questo scopo.
Alex, il tuo articolo è eccellente, ma credo che non sia stato toccato un punto molto importante, ovvero come trasmettere tutti questi dati in forma criptata attraverso una connessione sicura (crittografia a 256 bit). Cioè, i segnali dal computer-A vengono trasmessi al server attraverso una connessione sicura, a sua volta il computer-B legge questi dati dal server attraverso una connessione sicura. Con una tale organizzazione della trasmissione dei segnali, il broker non sarà in grado di risalire alla fonte di questi segnali, poiché tutto il traffico sarà criptato.
Alex, cosa ne pensi e come puoi risolvere il problema della sicurezza in modo più efficace?
Vorrei indirizzarvi alla seconda parte dell' articolo - trasmissione POST e utilizzo di multipart/form-data.
Per quanto riguarda la sicurezza, mi sembra di capire che si stia parlando di lavorare con i certificati SSL?
Questo può essere risolto aggiungendo due flag durante la creazione delle richieste. Ma consiglierei di lavorare con WinHttp.dll per l'SSL.
Tutto è quasi identico nell'interfaccia di creazione delle richieste, ma è pubblicizzato come più avanzato e ha un po' più di funzioni.
Sì, mi riferivo ai certificati SSL. Grazie per il consiglio, l'ho preso in considerazione. Se ho capito bene, sei d'accordo che questo modello di organizzazione del trasferimento dei dati può essere considerato sufficientemente sicuro?
enotis: Sì, mi riferivo ai certificati SSL. Grazie per il suo consiglio, ne ho tenuto conto. Se ho capito bene, sei d'accordo che questo modello di organizzazione del trasferimento dei dati può essere considerato sufficientemente sicuro?
Probabilmente si può pensare ad altre opzioni: ad esempio, si possono criptare i dati da soli e trasmetterli in chiaro.
questa è una funzione della classe MqlNet, con verifica SSL
//------------------------------------------------------------------ Requestbool MqlNet::Request(tagRequest &req)
{
if(!TerminalInfoInteger(TERMINAL_DLLS_ALLOWED)) { Print("-DLL not allowed"); return(false); } // verificare se la DLL è consentita nel terminaleif(!MQL5InfoInteger(MQL5_DLLS_ALLOWED)) { Print("-DLL not allowed"); return(false); } // verificare se la DLL è consentita nel terminaleif (req.toFile && req.stOut=="") { Print("-File not specified "); return(false); }
uchar data[]; int hRequest, hSend;
string Vers="HTTP/1.1"; string nill="";
if (req.fromFile) { if (FileToArray(req.stData, data)<0) { Print("-Err reading file "+req.stData); return(false); } }// leggere il file in un arrayelseStringToCharArray(req.stData, data);
if (hSession<=0 || hConnect<=0) { Close(); if (!Open(Host, Port, User, Pass, Service)) { Print("-Err Connect"); Close(); return(false); } }
// creare un descrittore di richiesta
hRequest=HttpOpenRequestW(hConnect, req.stVerb, req.stObject, Vers, nill, 0, INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0);
if (hRequest<=0) { Print("-Err OpenRequest"); InternetCloseHandle(hConnect); return(false); }
// inviare la richiestaint n=0;
while (n<3) // effettua due tentativi di invio. il primo è normale, il secondo se è richiesto SSL
{
n++;
hSend=HttpSendRequestW(hRequest, req.stHead, StringLen(req.stHead), data, ArraySize(data)); // invio del fileif (hSend<=0) // se l'invio non va a buon fine, controllare SSL
{
int err=0; err=GetLastError(err); Print("-Err SendRequest= ", err);
if (err!=ERROR_INTERNET_INVALID_CA) // se l'errore è davvero legato alla richiesta SSL
{
int dwFlags;
int dwBuffLen = sizeof(dwFlags); // impostare i flag aggiuntivi
InternetQueryOptionW(hRequest, INTERNET_OPTION_SECURITY_FLAGS, dwFlags, dwBuffLen);
dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
int rez=InternetSetOptionW(hRequest, INTERNET_OPTION_SECURITY_FLAGS, dwFlags, sizeof (dwFlags));
if (!rez) { Print("-Err InternetSetOptionW= ", GetLastError(err)); break; }
}
elsebreak;
}
elsebreak;
}
if (hSend>0) ReadPage(hRequest, req.stOut, req.toFile); // leggere la pagina se inviata
InternetCloseHandle(hRequest); InternetCloseHandle(hSend); // chiudere tutte le maniglieif (hSend<=0) Close(); // chiudere in caso di errorereturn(true);
}
Sì, ci sono molte opzioni per la crittografia, ma questo è l'argomento di un articolo a parte. Per prima cosa dobbiamo aumentare il modello di segnalazione attraverso l'hosting. Grazie per i suggerimenti.
I numeri di errore sono diversi.
l'errore è stato corretto
nella funzione
int HttpOpenRequestW
è necessario definire il sesto parametro come int e passare 0 al posto di " ".
int HttpOpenRequestW(int hConnect, string &lpszVerb, string &lpszObjectName, string &lpszVersion, string &lpszReferer, int lplpszAcceptTypes, uint dwFlags, int dwContext);
errore corretto
nella funzione
int HttpOpenRequestW
è necessario definire il sesto parametro come int e passargli 0 al posto di " ".
int HttpOpenRequestW(int hConnect, string &lpszVerb, string &lpszObjectName, string &lpszVersion, string &lpszReferer, int lplpszAcceptTypes, uint dwFlags, int dwContext);
Non funziona, dice lo stesso errore, come posso risolverlo?
Ho fatto una revisione di tutte le classi una settimana fa.
Funziona bene.
Innanzitutto, vorrei ringraziare l'autore per questo articolo. Penso che questo argomento sia rilevante soprattutto per quei trader che hanno già i loro sviluppi originali e cercano di proteggere la loro proprietà intellettuale. Il modello di trasmissione dei segnali di trading attraverso il server si adatta perfettamente a questo scopo.
Alex, il tuo articolo è eccellente, ma credo che non sia stato toccato un punto molto importante, ovvero come trasmettere tutti questi dati in forma criptata attraverso una connessione sicura (crittografia a 256 bit). Cioè, i segnali dal computer-A vengono trasmessi al server attraverso una connessione sicura, a sua volta il computer-B legge questi dati dal server attraverso una connessione sicura. Con una tale organizzazione della trasmissione dei segnali, il broker non sarà in grado di risalire alla fonte di questi segnali, poiché tutto il traffico sarà criptato.
Alex, cosa ne pensi e come puoi risolvere il problema della sicurezza in modo più efficace?
Alex, cosa ne pensi e come si può risolvere il problema della sicurezza in modo più efficace?
Vorrei indirizzarvi alla seconda parte dell' articolo - trasmissione POST e uso di multipart/form-data.
Per quanto riguarda la sicurezza, mi sembra di capire che stia parlando di lavorare con i certificati SSL?
Questo può essere risolto aggiungendo due flag durante la creazione delle richieste. Tuttavia, consiglierei di lavorare con WinHttp.dll per l'SSL.
Tutto è quasi identico nell'interfaccia di creazione delle richieste, ma è pubblicizzato come più avanzato e ha un po' più di funzioni.
Vorrei indirizzarvi alla seconda parte dell' articolo - trasmissione POST e utilizzo di multipart/form-data.
Per quanto riguarda la sicurezza, mi sembra di capire che si stia parlando di lavorare con i certificati SSL?
Questo può essere risolto aggiungendo due flag durante la creazione delle richieste. Ma consiglierei di lavorare con WinHttp.dll per l'SSL.
Tutto è quasi identico nell'interfaccia di creazione delle richieste, ma è pubblicizzato come più avanzato e ha un po' più di funzioni.
Sì, mi riferivo ai certificati SSL. Grazie per il suo consiglio, ne ho tenuto conto. Se ho capito bene, sei d'accordo che questo modello di organizzazione del trasferimento dei dati può essere considerato sufficientemente sicuro?
Probabilmente si può pensare ad altre opzioni: ad esempio, si possono criptare i dati da soli e trasmetterli in chiaro.
questa è una funzione della classe MqlNet, con verifica SSL
è possibile impostare anche i seguenti flag
dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_DATE_INVALID;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_CN_INVALID;
è possibile impostare anche i seguenti flag
dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_DATE_INVALID;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_CN_INVALID;
Salve,
Metachat è una buona idea e vorrei farne funzionare uno anch'io.
Sul sito fxmaster.de non c'è più nulla di funzionante - potete per favore fornire il sorgente PHP di metachat? Grazie mille.