Richtig mit FTP/SQL verbinden?

  • Halli hallo :)

    öfters benötige ich Daten aus einer MySQL Datenbank, die ich
    im AutoIt-Skript verwende. Dazu benutze ich einfach _IECreate()
    und rufe eine Website auf, welche Inputs hat. Mit _IEFormElementSetValue()

    schreibe ich dann in die Inputs rein und sende es ab. Diese Methode ist

    im Gegensatz zur EzMysql_DLL sicher, da keine Daten im Skript vorhanden sind.


    Ist das nun aber eine empfohlene Methode oder nutzt man andere Funktionen/Vorgehensweisen?

    Schließlich muss der Nutzer Internet Explorer haben (gab schon einige die keinen hatten) und

    _IECreate() spinnt manchmal typsich rum. Außerdem muss ich mich mit jedem Zugriff auf

    die Datenbank neuverbinden (im Gegensatz zur EzMysql Methode).


    Würde mich über eure Antworten freuen und

    ich wünsche euch schon mal schöne Festtage! :part:

  • schreibe ich dann in die Inputs rein und sende es ab. Diese Methode ist

    im Gegensatz zur EzMysql_DLL sicher, da keine Daten im Skript vorhanden sind.

    Also die anderen Methoden eine FTP-Verbindung oder eine Verbindung zu einer MySQL-Datenbank aufzubauen sind dir bekannt, aber du hältst es für sicherer, per Input und IE?
    Du könntest doch auch bei den anderen Wegen die Zugangsdaten erst mit einer Inputbox abfragen. Verstehe ich dich falsch?

    Grüße autoiter

  • Also die anderen Methoden eine FTP-Verbindung oder eine Verbindung zu einer MySQL-Datenbank aufzubauen sind dir bekannt, aber du hältst es für sicherer, per Input und IE?Du könntest doch auch bei den anderen Wegen die Zugangsdaten erst mit einer Inputbox abfragen. Verstehe ich dich falsch?

    Mit Daten in die Inputs meinte ich z.B den Nutzernamen, mit dem man sich anmelden will.
    Aber die SQL wird ja vom Server aus verbunden. Bei EzMysql werden die Nutzerdaten
    einfach in der DLL vom Autoit Skript übernommen, die man dann einfach hacken könnte. :D

  • Aber die SQL wird ja vom Server aus verbunden

    Das kann eher nicht sein..

    Google doch mal nach "MySQL AutoIt". Da müssten doch auch UDFs auftauchen, die du mit ODBC-Treiber nutzen kannst. ;)
    Ich sehe wirklich kein Problem darin, die Verbindungsdaten für FTP und MySQL erst bei Skriptlaufzeit einzugeben.

    Grüße autoiter

  • Das kann eher nicht sein..


    Wieso nicht? Also ich habe das so eingerichtet, das wenn man die Homepage aufruft,
    eine PHP Funktion für die Verbindung mit der SQL eingeleitet wird. So werden keine
    Logindaten lokal bearbeitet.

    Leider ist mir das wegen der Sicherheit nicht mehr vertraut, Verbindungsdaten im Skript
    zu haben, da ja auch andere User vertrauliche Daten in der SQL lassen.

  • Ah, verstehe jetzt. Klar, so gesehen läuft es vom Server aus.

    Allerdings bleibt es doch dabei, dass man auch in der Laufzeit des Skripts die Eingabe von Verbindungsdaten vom Nutzer fordern kann. Liege ich da falsch?

    Grüße autoiter

  • Wenn du schon eine PHP-Datei anlegst kannst du am besten über WinHttp kommunizieren.
    Dann kannst du die Seite aufrufen, angeben, welche Parameter übergeben werden sollen und das Ergebnis abfragen.

    Wenn du willst kannst du es auch über GET machen. Dann kannst du einfach eine URL aufrufen:
    z.B.: https://autoit.de/www.example.com?daten=... (Sonderzeichen in %... also URL form umwandeln)
    Dann mit PHP über $_GET["user"] abfragen.
    Dann kannst du einfach über InetRead() deine Anfrage senden und das Ergebnis kannst du mit PHP schreiben und das bekommst du zurück.

    (GET ist von der Anzahl Zeichen durch die URL begrenzt (ich meine irgendwas mit 1000+ Zeichen). Bei POST kannst du natürlich mehr übergeben, ist aber mit AutoIt etwas schwieriger mit umzugehen, da die WinHttp benötigt wird.)

    Hoffe, ich hab dich richtig verstanden :)

    MfG Kanashius

  • Wenn du schon eine PHP-Datei anlegst kannst du am besten über WinHttp kommunizieren.
    Dann kannst du die Seite aufrufen, angeben, welche Parameter übergeben werden sollen und das Ergebnis abfragen.

    Wenn du willst kannst du es auch über GET machen. Dann kannst du einfach eine URL aufrufen:
    z.B.: https://autoit.de/www.example.com?daten=... (Sonderzeichen in %... also URL form umwandeln)
    Dann mit PHP über $_GET["user"] abfragen.
    Dann kannst du einfach über InetRead() deine Anfrage senden und das Ergebnis kannst du mit PHP schreiben und das bekommst du zurück.

    (GET ist von der Anzahl Zeichen durch die URL begrenzt (ich meine irgendwas mit 1000+ Zeichen). Bei POST kannst du natürlich mehr übergeben, ist aber mit AutoIt etwas schwieriger mit umzugehen, da die WinHttp benötigt wird.)

    Hoffe, ich hab dich richtig verstanden :)

    MfG Kanashius

    Klingt ja mal meeeega geil, Kanashius! :D Habe mir das mal alles angeschaut
    und eigentlich ist das auf den ersten Blick gar nicht soooo schwer zu verstehen. :rolleyes:

    Ich habe noch eine kleine Frage.

    Den Codeschnipsel habe ich aus einem Beispiel:

    AutoIt
    _WinHttpOpen("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1")


    Benötigt der Nutzer der das Skript dann ausführt, nicht Mozilla Firefox?
    Wahrscheinlich haben viele den Browser nicht. :(
    (Edit: Hab gelesen, dass diese Anfrage einfach an den Server gesendet wird. Also da
    das mein Server ist, kann mir das ja egal sein, welcher Browser das ist. :P)
    Danke für die Hilfe! ^^


    Ah, verstehe jetzt. Klar, so gesehen läuft es vom Server aus.

    Allerdings bleibt es doch dabei, dass man auch in der Laufzeit des Skripts die Eingabe von Verbindungsdaten vom Nutzer fordern kann. Liege ich da falsch?

    Klar das wollte ich ja auch machen. Aber die vom Nutzer eingegebenen Daten sind ja nicht "geheim" im Gegensatz
    zu den Verbindungsdaten mit der Datenbank. :) Also bei WinHttp ist das jetzt so, dass ich die Verbindungsdaten
    wie Username/Passwort etc. nicht in das Skript reinschreiben muss. Bei EzMySql muss man das tun, damit diese
    Daten dann über DllCall übergeben werden und dadurch ist man dann mit der Datenbank direkt verbunden.
    Jedoch stehen die Verbindungsdaten nun 1. im Skript (kann man durch string find herausfiltern) und 2. in der
    memory (kann man mit memory reading herausfinden, da man den Aufbau ca. kennt von der Verbindung) und
    dann ist man ganz schnell gehackt. :(

    2 Mal editiert, zuletzt von xSunLighTx3 (22. Dezember 2016 um 04:02)

  • Benötigt der Nutzer der das Skript dann ausführt, nicht Mozilla Firefox?
    Wahrscheinlich haben viele den Browser nicht.
    (Edit: Hab gelesen, dass diese Anfrage einfach an den Server gesendet wird. Also da
    das mein Server ist, kann mir das ja egal sein, welcher Browser das ist. :P)
    Danke für die Hilfe!

    Das ist der sogenannte User-Agent. Der gibt an um welchen Browser es sich beim Clienten handelt.
    Du kannst das Feld auch frei lassen, oder einen User-Agent von Google Chrome oder dem Internet Explorer nehmen. Spielt absolut keine Rolle solange er relativ aktuell ist.

  • Das ist der sogenannte User-Agent. Der gibt an um welchen Browser es sich beim Clienten handelt.Du kannst das Feld auch frei lassen, oder einen User-Agent von Google Chrome oder dem Internet Explorer nehmen. Spielt absolut keine Rolle solange er relativ aktuell ist.

    Danke dir für die Erklärung! :)