Java über php datei lesen?

Status
Nicht offen für weitere Antworten.

lovestern26

Mitglied
Hy Leute,
ich wollte mal fragen wie kann Java von eine php datei lesen?
Ich habe leider in google nichts darüber gefunden.
Ich wollte es so machen von Java ChatClient über eine php datei in die datenbank einlesen lassen und einträge tätigen.
Ist so etwas möglich?

Bitte um Hilfe.

Ich bedanke mich schon im voraus.
 

Aradiv

Neues Mitglied
Die wohl einfachste Variante ist einen HTTP Request an das PHP Script zu senden. Der einfachheit halber würde ich zu einer GET-Anfrage Tendieren.


mfg
Aradiv
 

lovestern26

Mitglied
Die wohl einfachste Variante ist einen HTTP Request an das PHP Script zu senden. Der einfachheit halber würde ich zu einer GET-Anfrage Tendieren.


mfg
Aradiv

Vielen dank für deine antwort
aber ich wollte es so mach über php sollte nur eine mySQL datenbankverbindung hergestellt werden und über den Java ChatClient zu chatten. Damit wollte ich vermeiden einen Chatserver zu programmieren.
 

javimka

Top Contributor
Zufälligerweise habe ich gerade letztlich genau diese PHP<->Java Kommunikation programmiert :)
Das Php-Programm zum lesen der Datei (etwa so):
Code:
<?php 
mysql_connect("localhost","username","passwort") or die("Keine Verbindung möglich");

mysql_select_db("Datenbank") or die("Die Datenbank existiert nicht");

$query = "SELECT * FROM `daten` ... ";
$result = mysql_query($query);

$num = mysql_numrows($result);

$i=0;
while ($i < $num) {
	echo mysql_result($result,$i,"Spalte1").";";
	$i++;
}
?>
Mit diesem Skript kannst du die Datenbank auslesen und in irgendeiner Form ausdrucken.

Folgende Java-Methode liesst diese Daten ein
Java:
public void download() {
	try {
		URL url = new URL( "http://www.webseite.ch/read.php");
		Scanner scanner = new Scanner( url.openStream() ).useDelimiter( "\n" );
		while(scanner.hasNext()) {
	       		String line = scanner.next();
	       		System.out.println(line);
	    	}
	} catch (Exception e) {
		e.printStackTrace();
	}
}


Schwieriger ist es, Daten zu senden. Du könntest das mit get-Variabeln machen. Das sind die Einträge in der URL hinter dem "?". Folgendes php-Skript liesst diese Variabeln und fügt sie in die Datenbank:
Code:
<?php
mysql_connect("localhost","username","passwort") or die("Keine Verbindung möglich");

mysql_select_db("Datenbank") or die("Die Datenbank existiert nicht");

$spalte1= $_GET["spalte1"];

$query = "INSERT INTO `daten` ( `spalte1` , ... ) VALUES ('".$spalte1."', ... );";

mysql_query($query);
?>

Und mit folgender Java-Methode kannst du dem Php-Skript Daten zukommenlassen. 123 in Spalte1, 456 in Spalte 2:
Java:
public void upload() {
	try {
		String entry  = "http://www.webseite.ch/write.php?spalte1=123&spalte2=456";
		URL u = new URL(entry);
		u.openStream(); // vielleicht gibt es hier auch eine Alternative dazu
	} catch (Exception e) {
		e.printStackTrace();
	}
}

Falls jemand einen Fehler oder eine Gefahr sieht, bitte posten, hilft mir selber auch weiter :)
 
Zuletzt bearbeitet:

madboy

Top Contributor
$spalte1= $_GET["spalte1"];

$query = "INSERT INTO `daten` ( `spalte1` , ... ) VALUES ('".$spalte1."', ... );";
GEFAAAAHR ;-) Niemals nicht ohne Überprüfung und vor allem Escaping Werte, die vom Benutzer geliefert werden in ein SQL-Statement einbauen...
Stell dir vor, jemand baut so eine URL (bin da kein Experte, aber das Prinzip sollte passen):
Code:
h ttp://example.com/page.php?spalte1='); drop table daten;

dann wird deine Tabelle "daten" gelöscht (was noch harmlos ist eigentlich).

Suchmaschine anwerfen zum Stichwort "sql injection" und du wirst wahrscheinlich erschrecken was möglich ist :)
 

lovestern26

Mitglied
GEFAAAAHR ;-) Niemals nicht ohne Überprüfung und vor allem Escaping Werte, die vom Benutzer geliefert werden in ein SQL-Statement einbauen...
Stell dir vor, jemand baut so eine URL (bin da kein Experte, aber das Prinzip sollte passen):
Code:
h ttp://example.com/page.php?spalte1='); drop table daten;

dann wird deine Tabelle "daten" gelöscht (was noch harmlos ist eigentlich).

Suchmaschine anwerfen zum Stichwort "sql injection" und du wirst wahrscheinlich erschrecken was möglich ist :)

Ich bedanke mich bei euch für eure Hilfe ich werde es ausprobieren und auch nach "sql injection" googlen.
Mfg
 

javimka

Top Contributor
Vielen Dank für die Bemerkung, hätte ich erwähnen sollen. Das sollte das php-Skript auf jeden Fall überprüfen. Ich habe dazu die Befehle [c]strip_tags[/c] (für HTML Tags) und [c]mysql_real_escape_string[/c] (für MYSQL-Befehle) gefunden, aber noch nicht eingebaut.
Ob diese zwei Befehle schon reichen und alles Böse abdecken?
 

madboy

Top Contributor
Wie gesagt bin ich da kein Experte, aber es schadet nie, die Techniken potentieller Angreifer zu studieren. Für PHP existieren viele Beispiele, was man tun und lassen sollte.
Code:
mysql_real_escape_string
sollte die meisten injections abfangen aber ganz sicher wird das auch nicht sein vermutlich.

Auch ganz interessant sind Seiten wie :: Happy-Security :: - Hackits, Challenges, Tutorials oder http://www.hackthissite.org/
Macht Spaß und man lernt noch was zum Thema Sicherheit.
 

lovestern26

Mitglied
Wie gesagt bin ich da kein Experte, aber es schadet nie, die Techniken potentieller Angreifer zu studieren. Für PHP existieren viele Beispiele, was man tun und lassen sollte.
Code:
mysql_real_escape_string
sollte die meisten injections abfangen aber ganz sicher wird das auch nicht sein vermutlich.

Auch ganz interessant sind Seiten wie :: Happy-Security :: - Hackits, Challenges, Tutorials oder http://www.hackthissite.org/
Macht Spaß und man lernt noch was zum Thema Sicherheit.

Ok werde ich mir ansehen. Ja Thema Sicherheit spiel ein sehr große Roll.
Danke euch.
Mfg
 
T

tuxedo

Gast
Vielleicht lohnt auch ein Blick auf das hier: https://jpmdbc.dev.java.net/

Hab ich während meiner Diplomarbeit so nebenher mal gebastelt...
Die JDBC Schnittstelle ist zwar nicht zu 100% ausimplementiert (die Meta-Klassen fehlen), aber für das "übliche" sollte es reichen.

- Alex
 

lovestern26

Mitglied
Vielleicht lohnt auch ein Blick auf das hier: https://jpmdbc.dev.java.net/

Hab ich während meiner Diplomarbeit so nebenher mal gebastelt...
Die JDBC Schnittstelle ist zwar nicht zu 100% ausimplementiert (die Meta-Klassen fehlen), aber für das "übliche" sollte es reichen.

- Alex

Vielen dank. naja ich weiß nicht so genau wie man das mit JDBC verbindung aufbaut bzw. den treiber dafür installiert auf den server ich habe einen v-Server mit dem betriebsystem Debian 4 drauf......
:(
 
S

Spacerat

Gast
Ich kann madboy nur beipflichten... die Seite wäre in 2 Minuten matsch oder ein potentieller Angreifer hätte sie sich in dieser Zeit auch gemailt (Ich meine den PHP-Quellcode und nicht das was dabei heraus kommt. Ausserdem: ungefiltertes write über GET ohne Verzeichnisschutz? Was ist denn, wenn jemand schlicht die Links abfängt? der kann in die DB schreiben, was er will. Hier mal ne simple HTTP-Authentifikation (Base64-Encoded).
Java:
URL u = new URL("http://some.url");
String auth = "user:password";
char[] cdecoded = auth.toCharArray();
byte[] bdecoded = new byte[cdecoded.length];
int n;
for(n = 0; n < bdecoded.length; n++) {
	bdecoded[n] = (byte) cdecoded[n];
}
auth = "BASIC " + Base64.encode(bdecoded);
URLConnection uc = u.openConnection();
uc.addRequestProperty("Authorization", auth);
InputStream in = uc.getInputStream();
Ich hoffe du weisst, wie man diesen Verzeichnisschutz erstellt.
@Edit: Und dann noch das was tuxedo schreibt (von wegen SSL und so...), dann sollte jut sein...
 
Zuletzt bearbeitet von einem Moderator:

lovestern26

Mitglied
Ich kann madboy nur beipflichten... die Seite wäre in 2 Minuten matsch oder ein potentieller Angreifer hätte sie sich in dieser Zeit auch gemailt (Ich meine den PHP-Quellcode und nicht das was dabei heraus kommt. Ausserdem: ungefiltertes write über GET ohne Verzeichnisschutz? Was ist denn, wenn jemand schlicht die Links abfängt? der kann in die DB schreiben, was er will. Hier mal ne simple HTTP-Authentifikation (Base64-Encoded).
Java:
URL u = new URL("http://some.url");
String auth = "user:password";
char[] cdecoded = auth.toCharArray();
byte[] bdecoded = new byte[cdecoded.length];
int n;
for(n = 0; n < bdecoded.length; n++) {
	bdecoded[n] = (byte) cdecoded[n];
}
auth = "BASIC " + Base64.encode(bdecoded);
URLConnection uc = u.openConnection();
uc.addRequestProperty("Authorization", auth);
InputStream in = uc.getInputStream();
Ich hoffe du weisst, wie man diesen Verzeichnisschutz erstellt.
@Edit: Und dann noch das was tuxedo schreibt (von wegen SSL und so...), dann sollte jut sein...
Danke euch nochmal.
 

javimka

Top Contributor
Du hast dafür das Passwort im Java-Code. Das ist ja nullkommanichts geknackt und dann hat der Angreifer Zugriff auf die gesamte Datenbank. Natürlich kann bei meiner Methode jeder Einträge in die Datenbank machen, aber immerhin ist das Php-Skript im Stande gewisse gefährliche Einträge abzufangen. Somit besteht zumindeste in minimaler Schutz. Und wie das ganze noch sicherer gehen könnte, wüsste ich nicht.
Selbst wenn du das Passwort auf irgendeine geniale Weise obfuskierst, wird ein nicht vernachlässigbares Restrisiko bestehen, dass es rekonstruiert werden kann.
 
T

tuxedo

Gast
Dem kann ich nur zustimmen. Bei JPMDBC ist das das gleiche Problem: Das Passwort sollte nicht hardcodiert sein, sondern vom User eingegeben werden. Ansonsten ist das ganze vergleichbar mit einer phpMyAdmin-Installation der das Passwort beiliegt und direkt im Login-Screen mit angezeigt wird :)

- Alex
 
S

Spacerat

Gast
Mal langsam Kollegen... wo hätte ich es denn im Beispiel hinschreiben sollen? in einen anderen Thread? :D Naja... ihr habt ja recht. Hätte ich vllt. drauf hinweisen sollen.
Auf was man allerdings noch hinweisen sollte, ist, das bei der BASIC-Authentification, das PW nahezu im "Klartext" (nur Base64 encoded) übermittelt wird, und es ein leichtes ist das zu bekommen. Besser wäre dafür DAA geeignet. Aber die wird afaik nicht von jedem Server unterstützt. Ausserdem hab' ich das in Java auch noch nicht gemacht, weil, es bestand kein bedarf.
 
T

tuxedo

Gast
Naja, wenn dann SSL kombiniert mit "Passwort nicht im Quellcode speichern oder hardcodieren" ...

Alternativ kann man auch die Statements auf PHP Seite hardcodieren, ebenso das Passwort etc. Dann kann man von Java aus nur noch die Parameter für die Statements übergeben. Allerdings schränkt das die flexibilität etwas ein. Für "Spezialanwendungen" sollte das aber nicht so das Problem sein.

- Alex
 

lovestern26

Mitglied
Naja, wenn dann SSL kombiniert mit "Passwort nicht im Quellcode speichern oder hardcodieren" ...

Alternativ kann man auch die Statements auf PHP Seite hardcodieren, ebenso das Passwort etc. Dann kann man von Java aus nur noch die Parameter für die Statements übergeben. Allerdings schränkt das die flexibilität etwas ein. Für "Spezialanwendungen" sollte das aber nicht so das Problem sein.

- Alex

Ich möchte an alle mein besten dank aus sprechen.
Schaut nicht sehr einfach aus das ganze. xD
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N über Java in eine Text-Datei auf einem Server schreiben Netzwerkprogrammierung 2
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
T VPN-Verbindung über Java Netzwerkprogrammierung 4
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
L Mit Java über PHP in MySQL anmelden (Login script) Netzwerkprogrammierung 3
D Mehrere Clients über Java-Sockets Netzwerkprogrammierung 13
E Java über Socket ins Internet? Netzwerkprogrammierung 4
M Google Translate über Java ansprechen? Netzwerkprogrammierung 13
N Datenaustausch zwischen Java-GUI und PHP-Programm über SOAP Netzwerkprogrammierung 19
J Socket Erreichbarkeit eines Java Servers (Socket-Lösung) über das Internet Netzwerkprogrammierung 3
T Java Chat über UDP Netzwerkprogrammierung 7
T Java Socket und ServerSocket über Internet-IP? Netzwerkprogrammierung 9
R Java Chat über Inet connecten Netzwerkprogrammierung 3
V Java /Matrizen senden über TCP/IP / double Netzwerkprogrammierung 2
J Formular über Java abschicken Netzwerkprogrammierung 2
N java.awt.image.BufferedImage über Socket schicken Netzwerkprogrammierung 3
F Java, c-Structs über Tcp Netzwerkprogrammierung 5
O JAVA hängt bei Dateikopie über LAN ein Byte an!!! ARGH Netzwerkprogrammierung 3
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
M JAX-WS unter Java 17 plötzlich nicht mehr möglich Netzwerkprogrammierung 5
K Java RMI bricht ab wenn Remote eine Methode ausgeführt werden soll Netzwerkprogrammierung 5
M HTTP Let's Encrypt und Java Trust-Store Netzwerkprogrammierung 6
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
D path-Variablen in eine URL hinzufügen mit Java 1.8 Netzwerkprogrammierung 2
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
S Von Java auf passwortgeschützten Server zugreifen + Umgang mit Ports Netzwerkprogrammierung 28
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
x46 Java SSLContext erstellen mit SSL-Zertifikat Netzwerkprogrammierung 1
P Jenkins Login per Java Download Manager Netzwerkprogrammierung 15
N Java socket Programmierung Filme verschicken Netzwerkprogrammierung 20
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
K Java Websocketserver Problem | Android to Pi Netzwerkprogrammierung 1
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
V Browsergame mit Java(WebSocketServer) als Backend? Netzwerkprogrammierung 5
platofan23 Socket Java Socket mit DynDns nicht erreichbar Netzwerkprogrammierung 6
S Fragen zu Java Webservice mit Axis2 Netzwerkprogrammierung 0
M Mit Java Mail Mails an Webmailer schicken Netzwerkprogrammierung 1
mor16Euro HTTP Php website mit Java aktualisiern Netzwerkprogrammierung 6
T HTTP JAVA Browser Konsolenanfrage(JavaScript) Netzwerkprogrammierung 7
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
L Remote Desktop per Java steuern Netzwerkprogrammierung 4
F Server für Java Applikationen Netzwerkprogrammierung 16
J Webserver mit Java schreiben? Netzwerkprogrammierung 4
D JAVA RMI Netzwerkprogrammierung 1
K HTTP Mit Java HTML Codeauslesen um damit zu arbeiten Netzwerkprogrammierung 7
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
A Bestimmter URL/Certificate per Java immer vertrauen (Trustmanager/HostnameVerifier) Netzwerkprogrammierung 1
M HTTP PATCH Request mit Java ausführen Netzwerkprogrammierung 2
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
Aruetiise Socket Java Programm auf Server Netzwerkprogrammierung 3
L FTP Java Interpreter unterbindet SSL Handshake Netzwerkprogrammierung 2
C IFrame mit java auslesen Netzwerkprogrammierung 1
A FTP wie kann ich von java auf datei in fpt://192.168.178.1 lesen/schreiben? Netzwerkprogrammierung 3
C Datensammlung mit Java RMI Netzwerkprogrammierung 0
K Java Jsoup : OnLoad Netzwerkprogrammierung 0
S Java Chat Server Netzwerkprogrammierung 8
Carres HTTP Vorhandenen Session-ID Cookie von Firefox, Chrome oder IE in Java verwenden Netzwerkprogrammierung 2
B Java+Grbl: G-Code Befehle mit Java an Arduino senden und lesen Netzwerkprogrammierung 1
Z HTTP HTML Element auslesen in Java Netzwerkprogrammierung 1
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
Thallius HTTP HTTPS unter Java 1.6 schlägt fehl Netzwerkprogrammierung 4
P Chat in Java Netzwerkprogrammierung 3
C java.net.ConnectException: Operation timed out? Netzwerkprogrammierung 2
M Java Eingabe auf FTP Server übergeben Netzwerkprogrammierung 4
T curl request in java umwandeln Netzwerkprogrammierung 4
M Socket Java Server: NullPointerException Netzwerkprogrammierung 4
J Java Server empfängt php inhalt nicht Netzwerkprogrammierung 1
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
H Machbarkeitsfrage: TCP/IP Client (z.B. Netty) für Java Web Applcation Netzwerkprogrammierung 1
L Java RMI Objekt konsistenz Netzwerkprogrammierung 1
H Portforwarding umgehen in Java? Netzwerkprogrammierung 5
D Response in Java Servlet erzeugen Netzwerkprogrammierung 0
X Mit Java eine Applikation auf einem anderen Windows Rechner (Windows Server 2008) starten Netzwerkprogrammierung 1
E HttpUrlConnectionExample cannot be resolved to a type / Java 8 Netzwerkprogrammierung 1
F Socket Java Server mit Android App, Antwort vom Server an App Netzwerkprogrammierung 5
M Java-Programm aus dem Web laden Netzwerkprogrammierung 3
S HTTP-Requeste von Browser mit Java sniffen? Netzwerkprogrammierung 9
J access denied (“java.net.SocketPermission”…) mit Java 8 Netzwerkprogrammierung 1
N CURL requests in Java Netzwerkprogrammierung 6
P Kritische Java-Anwendung und Citrix veröffentlichen Netzwerkprogrammierung 1
F Java Server Scanner oder InputStream kann nicht gelsesen werden! Netzwerkprogrammierung 6
1 Netty NIO oder Java IO Netzwerkprogrammierung 2
1 Via Java mit WLAN Netzwerken verbinden Netzwerkprogrammierung 5
J Java Service Wrapper Netzwerkprogrammierung 1
K Mit Java ASPX Webseite fern steuern Netzwerkprogrammierung 2
H Socket Java | Server sendet Nachricht nur wenn vorher eine JOptionPane-Nachricht ausgegeben wurde. Netzwerkprogrammierung 2
K Emailsenden via Java Applikation Netzwerkprogrammierung 5
C Java Chat Admin Kenzeichnung Netzwerkprogrammierung 14
P PHP Script per Java ausführen Netzwerkprogrammierung 2
P PPTP Protokoll für JAVA Netzwerkprogrammierung 14
T php/java-bridge Netzwerkprogrammierung 16
D Webseite(mit JavaScript-Element) mit Java auslesen Netzwerkprogrammierung 0
G Multiple Clients and one Server --> java.lang.NullPointerException Netzwerkprogrammierung 1

Ähnliche Java Themen

Neue Themen


Oben