Re: Windows Anwendungmit einer Web mySQL als Backend?

Tech-Archive recommends: Fix windows errors by optimizing your registry



Vielen Dank Holger

Genau in der Richtung sollte es gehen. Nun ich hätte noch schreiben sollen,
dass sich die ganze Kommunikation zwischen einer Client .NET (2.0) Anwendung
und einer PHP Seite abspielen würde. Die übliche (günstigere) Webprovider
bieten meistens nur Service (Serverscript und Datenbank) auf der Linuxbasis
und das sind dann eben PHP und mySQL.
Wenn ich also auf der Serverseite PHP verwende, dann muss die Seite so
programmiert werden, dass sie Parameter entwender über URL oder POST erhält.
Über POST kann ich die nicht senden, weil ich die Controls in meiner
Applikation gar nicht zur Gesicht bekomme und wenn das so wäre, kann ich
schwer ein Formular ausfüllen und absenden innerhalb meiner Applikation. Also
werde ich Anfragen an mySQL sehr wahrscheinlich über URL an meine PHP Seite
senden müssen. Ich könnte die Parameter aber sicher verschlüsseln, denke ich.
Bei der Antwort der PHP Seite kann ich dann so eine Art XML Datei mit Daten
seitens PHP generieren (es wäre eigentlich eine HTML Datei, die einen XML
Code anzeigt).

Ich bin schon etwas genervt, dass es absolut keine Kommunikationsmöglichkeit
zwischen Clients im Web gibt, die einfach realisiert werden kann. Fast alle
Technologien basieren entwender an bestimmten Ports (die in meisten Fällen
geschlossen sind) oder man braucht zusätzliche Apllikationen auf der
Serverseite (was bei heutigen Provider gar nicht akzeptiert wird).

Gruss und Danke.

"Holger Boskugel" wrote:

Hallo Simon,

Vielen Dank für die Bestätigung, aber genau das ist mein Problem. Ich kann
in
so einem Fall meine Variablen nur über Header senden bzw. über den Link,
den
ich in meiner Applikation aufrufen würde und das würde ein
Sicherheitsrisiko
darstellen. Besonderes wenn ich dadurch beliebige SQL Abfragen (auch
INSERT
oder DELETE) zusenden würde!

KAnn der Anwender überhaupt sehen was ich im Code für eine dynamische
Seite
aufrufe? Falls er Firewall hat, wird sich der schon melden, aber wird dort
die ganze URL angezeigt inklusive alle Variablen die in der URL
zusammengefügt wurden?

Verschlüsseln des Links geht, denke ich, nicht, oder?

Gibt es sonst welche Möglichkeiten die Standard Provider Angebote zu
nützen
und dabei eine Applikation entwickeln die auf dem Client keine spezielle
Anforderungen stellt (wie etwa spezifische Ports frei schalten o.ä.)?

Der Anwender sieht normalerweise nur die URL, denn das XML der Query
wird ja per POST übermittelt nicht per GET ! Einzig mit einem TCPIP-
Sniffer sollte er dann den Inhalt sehen. Du könntest aber z.B. in den HTTP-
Header drei Variablen schreiben, wie :

X-SQL-Call-ID : <hier einen GUID-String>
X-SQL-Reference : <hier den MD5/SHA1 Hash der GUID>
X-SQL-ID : <hier den MD5/SHA1 Hash des SQL-Befehls verknüpft mit der GUID
des Calls>

So könntest du Prüfen ob die Anforderung in sich stimmig ist. Sprich
Du vergleichst die Daten die Du bekommst wieder mit den Hashes.
Die Call-ID ließe sich auch mit ins XML verpacken :

<query id="<hier einen GUID-String>">
<sql>select * from MyTable</sql>
</query>

Die Schritte wären dann :

a) Extrakt der GUID aus dem XML
b) Extract des SQL aus dem XML
c) Extract des X-SQL-Reference-Headers
d) Extract des X-SQL-ID-Headers
e) Vergleich des MD5/SHA1 aus der GUID (a) mit dem Reference-Header (c)
f) Vergleich des MD5/SHA1 aus SQL + GUID mit dem ID-Header (d)

Wenn beide Vergleiche stimme dann Ergebnis zurückgeben ansonsten :
a) einen Fehler oder
b) einen Bad Request (HTTP 400?)


Gruß

Holger

PS : Hier mal noch der Client Request vielleicht zum besseren Verständnis :

POST /db/query HTTP/1.0
Host: myhost.de
User-Agent: MyAgent
X-SQL-Call-ID : abcdef0123456789abcdef0123456789
X-SQL-Reference : 0123456789abcdef0123456789abcdef01234567
X-SQL-ID : abcdef0123456789abcdef0123456789abcdef01

<query id="abcdef0123456789abcdef0123456789">
<sql>select * from MyTable</sql>
</query>


oder in der kürzeren Form :

POST /db/query HTTP/1.0
Host: myhost.de
User-Agent: MyAgent
X-SQL-Reference : 0123456789abcdef0123456789abcdef01234567
X-SQL-ID : abcdef0123456789abcdef0123456789abcdef01

<query id="abcdef0123456789abcdef0123456789">
<sql>select * from MyTable</sql>
</query>



"Holger Boskugel" wrote:

Hallo Simon,

Ich würde gerne in meinen Anwendungen auch einen Webinterface
einbauen.
Die
Möglichkeiten sind gross, weil man hätte eine Zentralle stelle, die
allen
gestarteten Applikationen gemeinsam wäre (in meinem Fall z.B. die
mySQL
Datenbank auf dem Web).
Nun je mehr ich darüber nachdenke, desto mehr Probleme tauchen auf.
Schon
beim Versuch die einfache Verbindung zu einer Web mySQL Datenbank
aufzubauen,
scheitert aus! Das Problem sind die Ports, die bei den meisten Firmen
zu
sind
(und vermehrt auch bei Privatanwender). Und ich will nicht eine
Anwendung
schreiben, die dann eine lange Anleitung für die Portsfreischaltung
braucht!

Weiss jemand wie man am einfachsten die Gemeinsame Basis für die
Anwendungen
schaffen kann, ohne dabei spezielle Ports verwenden zu müssen, so das
alles
eigentlich über 8080 geht, weil 8080 immer frei wäre?

Ich habe mir überlegt eine Art Seitenaufrufs im Code zu realisieren
(das
hab
ich schon öfters gemacht). Die Seite wäre eine PHP Seite, die mir dann
entsprechende Informationen (z.B. XML Datei) dynamisch auf dem Server
generieren würde. Das Problem ist aber, dass ich alle Parameter (z.B.
SQL
Abfragen) an den Seitenaufruf anhängen müsste! Das gefällt mir aber
nicht
so
:(

Wie ist es eigentlich mit Directory Services, brauchen die auch 8080?
Soweit
es mir noch in Erinnerung geblieben ist, ist dort das Problem, dass
man
auf
der Serverseite spezielle Dienste einrichten muss, was natürlich bei
einem
Proffessionelen Provider nicht gemacht wird und eigenen Server will
ich
nicht
aussetzen.

Für alle Vorschläge, vielen Dank im Voraus.

Im Prinzip hast Du Dir ja schon selbst geantwortet, in dem Du
PHP/ASP/JSP
auf der Server-Seite nutzt und damit auch einen normalen 80er Port
benutzen
könntest. Das SQL ließe sich in eine POST-Anforderung verpacken die z.B.
im HTTP-Header entweder nur über den "Content-Type" = "text/xml" identi-
fiziert wird oder über eine/mehrer eigene Header-Variablen.


Gruß

Holger



.



Relevant Pages

  • Re: Ruby performance woes
    ... Now here's my take on all this: PHP and JSP and what I inquired ... S-expressions used as a directly alternate expression of SGML or XML. ... By the way, I've never had access to a Web server that can run ASP, ...
    (comp.lang.lisp)
  • Re: Object Oriented Content System - the idea
    ... >I expected php to be smarter then that. ... >form like bytecode in memory for the next request. ... each action added some stuff to a "response" XML document. ... that map/object/data and formats it for HTML display using an includeed PHP ...
    (comp.lang.php)
  • Re: Need help with PHP DOMXML - get_elements_by_tagname
    ... PHP as a supported platform. ... uses the built in XML handler CF MX provides. ... in newer versions of PHP and the method will *not* support xpath. ...
    (comp.lang.php)
  • Re: AJAX Help - responseXML always NULL
    ... to the PHP script I am calling, the XML file shows up just fine. ... the Content-Type header of the response does not fit. ... PHP Script on Server Side ...
    (comp.lang.javascript)
  • Re: [PHP] Arrays and performance
    ... where some of our customers have *alot* of products. ... XML file and prompts the user that this file is to large for automatic ... >From what I understand of your answer you're telling me that PHP ... itself will not have any "problems" working with 1.000.000.000 arrays, ...
    (php.general)