Zunächst einmal möchte ich dem Autor für diesen Artikel danken. Ich denke, dieses Thema ist vor allem für jene Händler relevant, die bereits eigene Entwicklungen haben und ihr geistiges Eigentum schützen wollen. Das Modell der Übermittlung von Handelssignalen über den Server ist für diesen Zweck sehr gut geeignet.
Alex, Ihr Artikel ist ausgezeichnet, aber ich denke, dass ein sehr wichtiger Punkt nicht angesprochen wurde, nämlich wie man all diese Daten in verschlüsselter Form über eine sichere Verbindung (256-Bit-Verschlüsselung) übertragen kann. D.h. die Signale von Computer A werden über eine sichere Verbindung an den Server übertragen, Computer B wiederum liest diese Daten ebenfalls über eine sichere Verbindung vom Server ab. Bei einer solchen Organisation der Signalübertragung kann der Broker die Quelle dieser Signale nicht zurückverfolgen, da der gesamte Datenverkehr verschlüsselt ist.
Alex, was hältst du davon und wie kann das Sicherheitsproblem besser gelöst werden?
Alex, was denkst du darüber und wie kann das Sicherheitsproblem besser gelöst werden?
Ich möchte Sie auf den zweiten Teil des Artikels verweisen - POST-Übertragung und Verwendung von multipart/form-data.
Was die Sicherheit betrifft, so sprechen Sie von der Arbeit mit SSL-Zertifikaten?
Dies kann durch Hinzufügen von zwei Flags bei der Erstellung von Anfragen gelöst werden. Aber ich würde empfehlen, mit WinHttp.dll für SSL zu arbeiten.
Die Schnittstelle für die Erstellung von Anfragen ist fast identisch, aber sie wird als fortschrittlicher angepriesen und hat ein paar mehr Funktionen.
Ich möchte Sie auf den zweiten Teil des Artikels verweisen - POST-Übertragung und Verwendung von multipart/form-data.
Was die Sicherheit betrifft, so sprechen Sie von der Arbeit mit SSL-Zertifikaten?
Dies kann durch das Hinzufügen von zwei Flags bei der Erstellung von Anfragen gelöst werden. Aber ich würde empfehlen, mit WinHttp.dll für SSL zu arbeiten.
Die Schnittstelle zur Erstellung von Anfragen ist fast identisch, aber sie wird als fortschrittlicher angepriesen und hat ein paar mehr Funktionen.
Ja, ich bezog mich auf SSL-Zertifikate. Danke für den Hinweis, ich habe ihn berücksichtigt. Wenn ich Sie richtig verstanden habe, stimmen Sie zu, dass dieses Modell der Datenübertragungsorganisation als ausreichend sicher angesehen werden kann?
enotis: Ja, ich bezog mich auf SSL-Zertifikate. Ich danke Ihnen für Ihren Hinweis, ich habe ihn berücksichtigt. Wenn ich Sie richtig verstehe, sind Sie also auch der Meinung, dass dieses Modell der Datenübermittlung als ausreichend sicher angesehen werden kann?
Wahrscheinlich fallen Ihnen noch andere Möglichkeiten ein, z.B. können Sie Ihre Daten selbst verschlüsseln und offen übertragen.
dies ist eine Funktion der Klasse MqlNet, mit SSL-Verifizierung
//------------------------------------------------------------------ Requestbool MqlNet::Request(tagRequest &req)
{
if(!TerminalInfoInteger(TERMINAL_DLLS_ALLOWED)) { Print("-DLL not allowed"); return(false); } // Prüfen, ob die DLL im Terminal erlaubt istif(!MQL5InfoInteger(MQL5_DLLS_ALLOWED)) { Print("-DLL not allowed"); return(false); } // Prüfen, ob die DLL im Terminal erlaubt istif (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); } }// Lesen der Datei in ein ArrayelseStringToCharArray(req.stData, data);
if (hSession<=0 || hConnect<=0) { Close(); if (!Open(Host, Port, User, Pass, Service)) { Print("-Err Connect"); Close(); return(false); } }
// Erstellen eines Anforderungsdeskriptors
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); }
// Senden der Anfrageint n=0;
while (n<3) // zwei Sendeversuche unternehmen. der erste ist normal, der zweite, wenn SSL erforderlich ist
{
n++;
hSend=HttpSendRequestW(hRequest, req.stHead, StringLen(req.stHead), data, ArraySize(data)); // Senden der Dateiif (hSend<=0) // wenn das Senden nicht erfolgreich ist, SSL prüfen
{
int err=0; err=GetLastError(err); Print("-Err SendRequest= ", err);
if (err!=ERROR_INTERNET_INVALID_CA) // wenn der Fehler wirklich mit der SSL-Anfrage zusammenhängt
{
int dwFlags;
int dwBuffLen = sizeof(dwFlags); // zusätzliche Flaggen setzen
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); // Lesen der Seite, falls gesendet
InternetCloseHandle(hRequest); InternetCloseHandle(hSend); // alle Griffe schließenif (hSend<=0) Close(); // Schließen bei Fehlerreturn(true);
}
Ja, es gibt eine Menge Optionen für die Verschlüsselung, aber das ist das Thema eines separaten Artikels. Zuerst müssen wir das Modell der Signalisierung durch das Hosting erhöhen. Vielen Dank für die Tipps.
Die Fehlernummern sind unterschiedlich.
der Fehler wurde korrigiert
in der Funktion
int HttpOpenRequestW
ist es notwendig, den 6. Parameter als int zu definieren und ihm 0 anstelle von " " zu übergeben.
int HttpOpenRequestW(int hConnect, string &lpszVerb, string &lpszObjectName, string &lpszVersion, string &lpszReferer, int lplpszAcceptTypes, uint dwFlags, int dwContext);
Fehler behoben
in der Funktion
int HttpOpenRequestW
ist es notwendig, den 6. Parameter als int zu definieren und ihm 0 anstelle von " " zu übergeben
int HttpOpenRequestW(int hConnect, string &lpszVerb, string &lpszObjectName, string &lpszVersion, string &lpszReferer, int lplpszAcceptTypes, uint dwFlags, int dwContext);
Es funktioniert nicht, es wird derselbe Fehler angezeigt, wie kann ich ihn beheben?
Ich habe erst vor einer Woche eine Überarbeitung aller Klassen vorgenommen.
Es funktioniert gut.
Zunächst einmal möchte ich dem Autor für diesen Artikel danken. Ich denke, dieses Thema ist vor allem für jene Händler relevant, die bereits eigene Entwicklungen haben und ihr geistiges Eigentum schützen wollen. Das Modell der Übermittlung von Handelssignalen über den Server ist für diesen Zweck sehr gut geeignet.
Alex, Ihr Artikel ist ausgezeichnet, aber ich denke, dass ein sehr wichtiger Punkt nicht angesprochen wurde, nämlich wie man all diese Daten in verschlüsselter Form über eine sichere Verbindung (256-Bit-Verschlüsselung) übertragen kann. D.h. die Signale von Computer A werden über eine sichere Verbindung an den Server übertragen, Computer B wiederum liest diese Daten ebenfalls über eine sichere Verbindung vom Server ab. Bei einer solchen Organisation der Signalübertragung kann der Broker die Quelle dieser Signale nicht zurückverfolgen, da der gesamte Datenverkehr verschlüsselt ist.
Alex, was hältst du davon und wie kann das Sicherheitsproblem besser gelöst werden?
Alex, was denkst du darüber und wie kann das Sicherheitsproblem besser gelöst werden?
Ich möchte Sie auf den zweiten Teil des Artikels verweisen - POST-Übertragung und Verwendung von multipart/form-data.
Was die Sicherheit betrifft, so sprechen Sie von der Arbeit mit SSL-Zertifikaten?
Dies kann durch Hinzufügen von zwei Flags bei der Erstellung von Anfragen gelöst werden. Aber ich würde empfehlen, mit WinHttp.dll für SSL zu arbeiten.
Die Schnittstelle für die Erstellung von Anfragen ist fast identisch, aber sie wird als fortschrittlicher angepriesen und hat ein paar mehr Funktionen.
Ich möchte Sie auf den zweiten Teil des Artikels verweisen - POST-Übertragung und Verwendung von multipart/form-data.
Was die Sicherheit betrifft, so sprechen Sie von der Arbeit mit SSL-Zertifikaten?
Dies kann durch das Hinzufügen von zwei Flags bei der Erstellung von Anfragen gelöst werden. Aber ich würde empfehlen, mit WinHttp.dll für SSL zu arbeiten.
Die Schnittstelle zur Erstellung von Anfragen ist fast identisch, aber sie wird als fortschrittlicher angepriesen und hat ein paar mehr Funktionen.
Ja, ich bezog mich auf SSL-Zertifikate. Ich danke Ihnen für Ihren Hinweis, ich habe ihn berücksichtigt. Wenn ich Sie richtig verstehe, sind Sie also auch der Meinung, dass dieses Modell der Datenübermittlung als ausreichend sicher angesehen werden kann?
Wahrscheinlich fallen Ihnen noch andere Möglichkeiten ein, z.B. können Sie Ihre Daten selbst verschlüsseln und offen übertragen.
dies ist eine Funktion der Klasse MqlNet, mit SSL-Verifizierung
können Sie auch die folgenden Flags setzen
dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_DATE_INVALID;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_CN_INVALID;
können Sie auch die folgenden Flags setzen
dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_DATE_INVALID;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_CN_INVALID;
Hallo,
Metachat ist eine gute Idee und ich würde es gerne selbst zum Laufen bringen.
Auf der Seite fxmaster.de funktioniert nichts mehr - können Sie mir bitte den PHP-Source zu metachat zur Verfügung stellen? Vielen Dank!