Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst PHP mysqli Connect und Select DB mag nicht

Mitglied: H41mSh1C0R

H41mSh1C0R (Level 3) - Jetzt verbinden

07.12.2018, aktualisiert 17:35 Uhr, 225 Aufrufe, 7 Kommentare, 1 Danke

Aloa in die Runde,

https://www.youtube.com/watch?v=BxaD-5cuvQg&index=86&list=PL5-HG ...

Wie in dem Video versuche ich das gerade nachzubauen.

- XAMPP installiert
- Datenbank "gb" eingerichtet
- Tabelle gb angelegt mit Nutzer, Nachricht und Datum
- User angelegt und auf "gb" berechtigt, SELECT und INSERT und Häkchen bei administrativ auf GRANT

Jetzt verwendet der Prof aus dem Video für connect und select db --> mysql_connect und mysql_select_db.

Laut aktuellem Manual deprikated. Sollte stattdessen mysqli_connect und mysqli_select_db benutzen:

01.
<!doctype html>
02.
<html>
03.
 <body>
04.
	<h1> Übung Gästebuch </h1>
05.
	<form method="POST" action="./gb.php">
06.
		Ihr Name		: <input type="text" name="IhrName"> <br />
07.
		Ihre Nachricht	: <textarea name="IhreNachricht"></textarea> <br />
08.
		<input type="submit" />
09.
	</form>
10.
	<?php
11.
		$link = mysqli_connect('localhost', 'gbuser', 'h4s)zu', 'gb');
12.
		mysqli_select_db($link, "gb");
13.
	
14.
		if ($_POST['IhrName'] AND $_POST['IhreNachricht']) {
15.
			$IhrName = $_POST['IhrName'];	
16.
			$IhreNachricht = $_POST['IhreNachricht'];
17.
			
18.
			$sql = "INSERT INTO gb.gb (Name, Nachricht, Datum) VALUES ('$IhrName','$IhreNachricht', now())";
19.
			$result = mysqli_query($link, $sql);
20.
		};
21.
	?>
22.
 </body>
23.
</html>
Bekomme bei dem Beispiel nun folgende Warnings:

01.
Warning: mysqli_connect(): (HY000/1045): Access denied for user 'gbuser'@'localhost' (using password: YES) in C:\Tools\xampp\htdocs\gb\gb.php on line 18
02.
 
03.
Warning: mysqli_select_db() expects parameter 1 to be mysqli, boolean given in C:\Tools\xampp\htdocs\gb\gb.php on line 19
1. Warum heißen die Dinger Warnings, wenn die im error.log stehen? *gg*
2. Warum ein Access Denied? Hab die Userberechtigung auf der Datenbank oder muss die Berechtigung auf global stehen?

userrechte - Klicke auf das Bild, um es zu vergrößern

3. mysqli_select_db($link, "gb"); sollte doch stimmen oder nicht? wie : http://php.net/manual/de/mysqli.select-db.php


VG

Mitglied: maretz
LÖSUNG 07.12.2018 um 18:43 Uhr
also - wenn du mal bei php.net guckst siehst du das es eben das select_db nich mehr gibt, das wird als 4ter parameter zu connect gepackt... das select_db brauchst du dann nicht mehr.

versuch mal nen reload von mysql - ich vermute du hast kein reload_grants gemacht nachdem du die rechte gesetzt hast.
Bitte warten ..
Mitglied: Pjordorf
07.12.2018 um 20:52 Uhr
Hallo,

Zitat von H41mSh1C0R:
Wie in dem Video versuche ich das gerade nachzubauen.
Und wenn du vorher geschaut hättest wäre auch dir aufgefallen das ein Video welches 2013 reingestellt wurde teilweise auf Softwareversionen aufgebaut ist die teils heute gar nicht mehr funktionieren müssen. Setzt deine Bastelkisten auf den Softwarestand des Authors und du kannst 1:1 abschreiben.
php youtube date - Klicke auf das Bild, um es zu vergrößern
Gruß,
Peter
Bitte warten ..
Mitglied: H41mSh1C0R
07.12.2018, aktualisiert um 21:29 Uhr
Das dies Video von 2013 stammt ist mir bewusst.
Das umschiffen mit mysqli hatte wie du oben lesen kannst ja bereits begonnen aber das Problem war ja ein anderes.

Wenns nur ums 1:1 abschreiben gegangen wäre hätte man das sicher machen können mit den alten Softwareversionen, nur ist es nicht immer besser das auf dem aktuellen Release hinzubekommen? Wir leben ja nicht in der Vergangenheit. =)

Gruß und nur noch 40min bis zum Feierabend. =)
Bitte warten ..
Mitglied: LordGurke
07.12.2018, aktualisiert um 23:22 Uhr
Bei dem Video und dem Code zieht es einem ja die Schuhe aus...
Tu dir einen gefallen, und folge den Tutorials vom Herrn Preuss besser nicht mehr. Wer es selbst nicht kann, sollte nicht versuchen anderen etwas beizubringen...

Niemals, wirklich niemals, erst recht nicht zum Zwecke der Schulung aber auch sonst niemals übernimmt man Nutzereingaben ungefiltert in eine SQL-Anweisung.
Du kannst dir ja mal ausgeben lassen wie deine SQL-Anweisung aussieht, wenn du in das Feld "Ihr Name" folgendes einträgst:
01.
irgendein Name', 'Nachricht', NOW()); DROP TABLE `gb`; --
Um es abzukürzen: Da käme dann heraus:
01.
INSERT INTO gb.gb (Name, Nachricht, Datum) VALUES ('irgendein Name', 'Nachricht', NOW()); DROP TABLE `gb`; --', 'Beliebige Nachricht, wird aber ignoriert, weil ein doppelter Bindestrich einen Kommentar einleitet', now())
Da der doppelte Bindestrich alles, was nach ihm kommt, für MySQL vollkommen uninteressant macht, würde MySQL also ausführen:
-> INSERT INTO gb.gb (Name, Nachricht, Datum) VALUES ('irgendein Name', 'Nachricht', NOW());
-> DROP TABLE `gb`;

Ja, und dann ist deine Tabelle weg
Nennt sich SQL-Injection und ist leicht zu bekämpfen indem man am besten direkt MySQLi sein lässt und mit PDO und Prepared Statements einsteigt. Wenn man bei MySQLi bleiben will, muss man sich dringend um "mysqli_real_escape_string()" bemühen.

Im Nachfolgenden Video wird dann das Formular ausgegeben und das, was der Nutzer reingeschrieben hat auf der Webseite ausgegeben.
Auch vollkommen ungefiltert, was es uns ermöglicht, HTML und JavaScript auf die Seite zu schleusen...
Wenn du in dein Formular also als Name z.B. einträgst:
01.
irgendein Name</td> <script type="text/javascript">alert('Herrje, selbst im Jahr 2013 war XSS ein bekanntes und bewältigbares Problem!!');</script>
Dann wird beim Aufruf der Seite mein Javascript ausgeführt, was im Zweifel nicht so nett ist und nur eine Message-Box anzeigt sondern dir direkt den hottesten Scheiß der Malware-Szene installiert.
Kann man verhindern, indem man die Variablen nicht einfach nur per "echo" ausgibt sondern z.B. mit "htmlentities()" unschädlich macht.

Jetzt könnte man argumentieren, dass das ja nur ein schnelles Tutorial ist.
Nein, das sind trivialste und katastrophalste Sicherheitslücken und deren Beseitigung eben keine optionale Sache. Das sollte man den Leuten von Anfang an richtig beibringen.
Bitte warten ..
Mitglied: H41mSh1C0R
08.12.2018, aktualisiert um 01:33 Uhr
Danke für deinen ausführliches Post aber ich bin der Meinung das die Video Reihe NUR grundlegend zeigen soll wie die Abläufe sind, lesen und schreiben in eine DB. Da visuell vieles schöner ist was bietet sich zu Demozwecken besser an als eine Form?

Es handelt sich hier um einen Grundkurs "Datenbanken 1". Zum veranschaulichen reicht daher das gezeigte locker aus.

Würde der Kurs sich rein um php & co drehen könnte ich deine Einwände verstehen.
Bitte warten ..
Mitglied: LordGurke
08.12.2018 um 02:16 Uhr
Naja... Wie viele Leute suchen wohl nach dem konkreten Problem, landen auf dem Video und lassen das dann so?
Bitte warten ..
Mitglied: maretz
08.12.2018 um 12:09 Uhr
Stimmt - und wenn die z.B. für privat was zum lernen machen wollen ist es auch nicht weiter wild. Ja, es gibt bessere Ansätze, keine Frage... Und dann könnte man auch gleich noch mit Objektorientierung anfangen, mit Funktionen, APIs,.... -> und du wirst merken das die ersten Testprojekte gleich gegen die Wand laufen.

Oder man fängt halt erst mal mit sowas an und geht dann Schritt für Schritt bei und schaut wie es besser gehen würde... Und nur mal nebenbei: Auch die Implementierung von PDO usw. ist eben nur EIN Punkt in der Kette, das hilft dir aber nicht wenn du z.B. den MySQL mit simplen Passwörtern frei ins Netz stellst,... Wenn du dann nich nen Video nur für "Hallo Welt" machen willst dürftest du gleich für nen Grundlagentraining locker mal 30h machen...
Bitte warten ..
Ähnliche Inhalte
PHP
Mysqli in eigenen PHP Funktionen
gelöst Frage von BuddersPHP4 Kommentare

Halli Hallo liebe Administratoren, schon mal Vorweg: ich habe mich die letzten Wochen dran gemacht mich mit PHP zu ...

Datenbanken

PHP MySQLI - Abfrage von Datensätzen nicht möglich

gelöst Frage von CreamyCewieDatenbanken2 Kommentare

Hallo, ich versuche gerade mittels PHP/MySQLi Datensätze aus meiner DB auszulesen. Mein Script: Hier erhalte ich jedoch folgenden Fehler: ...

PHP

PHP Auswahlliste Select über Funktionen

Frage von SanastasiaPHP5 Kommentare

Hallo, ich möchte mit PHP eine Auswahlliste erstellen, also z.b. Menü A, Menü B, Menü C, Menü D.Hierfür benutze ...

PHP

PHP-MySQL - mysqli liefert einen Datensatz zu wenig

gelöst Frage von Windows-SpielerPHP3 Kommentare

Hallo zusammen, ich habe eine einfache (und nicht normalisierte) Tabelle in MySQL mit dem Namen "elemente". In dieser befinden ...

Neue Wissensbeiträge
Humor (lol)
Administrator.de Perlen
Tipp von DerWindowsFreak2 vor 2 TagenHumor (lol)5 Kommentare

Hallo, Heute beim stöbern auf dieser Seite bin auf folgenden Thread aus dem Jahre 2006 gestossen: Was meint ihr? ...

Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 3 TagenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 7 TageniOS5 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor!
Tipp von Criemo vor 7 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
PCIe 1.0 Grafikkarte für 3840x2160
Frage von Windows10GegnerGrafikkarten & Monitore30 Kommentare

Hallo, mein Vater hat einen neuen Monitor gekauft, welcher eine native Auflösung von 3840*2160 hat. Diese muss jetzt auch ...

Windows Server
Dienstnamen und oder Deutsche und Englische Beschreibung in services.msc gleichzeitig anzeigen
gelöst Frage von vafk18Windows Server23 Kommentare

Guten Morgen, die Suche nach Diensten in services.msc gestaltet sich immer wieder schwierig, weil mir je nach Aufgabe die ...

Windows 10
Windows Enterprise 1809 Eval nicht bootbar
Frage von Sunny89Windows 1022 Kommentare

Hallo zusammen, bevor ich mich jetzt noch stundenlang rumärger wollte ich euch fragen, ob Ihr die gleichen Probleme habt ...

JavaScript
Javascript: WebSql
gelöst Frage von internet2107JavaScript14 Kommentare

Guten Morgen zusammen, zunächst einmal einen schönen dritten Advent. Ich habe ein Problem mit Javascript und WebSQL. Bisher habe ...