Vor kurzem wurde mir vorgeschlagen, meinen Code so zu ändern, dass er PDO verwendet, um meine Abfragen zu parametrisieren und HTML sicher in der Datenbank zu speichern.
Nun, hier sind die Hauptprobleme:
Ich habe mir http://php.net/manual/en/ref.pdo-mysql.php angesehen und weiß nicht genau, wo ich das hinstellen soll $ ./configure --with-pdo-mysql
string ...
Für die Website, die ich gerade erst aufbaue, ist nur ein PDO für eine Seite erforderlich. Obwohl ich in Betracht ziehen könnte, es neu zu schreiben, würde es eine Weile dauern und ich muss die Seiten bald ausführen, damit ich MySQL nicht vollständig deaktivieren kann. Wenn ich PDO installiere, kann ich dann immer noch mysql_*
Handler?
Auf dem fraglichen Server läuft PHP Version 5.4.6-1ubuntu1 und Apache/2.2.22 (Ubuntu). Wenn es darauf ankommt, führe ich auch eine phpMyAdmin-Datenbank aus.
Unter Ubuntu sollten Sie in der Lage sein, die erforderlichen PDO-Teile von Apt mit Sudo apt-get install php5-mysql
Zu installieren.
Es gibt keine Einschränkung zwischen der gleichzeitigen Verwendung von PDO und mysql_. Sie müssen jedoch zwei Verbindungen zu Ihrer Datenbank herstellen, eine mit mysql_ und eine mit PDO.
Das ist eine gute Frage, aber ich denke, Sie verstehen einfach falsch, was Sie lesen.
Das ./config --with-pdo-mysql
ist etwas, das Sie nur anlegen müssen , wenn Sie Ihren eigenen Code kompilieren PHP). Wenn Sie ihn mit installieren Paketmanager müssen nur die Kommandozeile von Jany Hartikainen benutzen: Sudo apt-get install php5-mysql
und auch Sudo apt-get install pdo-mysql
Abgesehen davon, dass mysql_ wirklich entmutigt ist, sind beide unabhängig. Wenn Sie ein PDO verwenden, ist mysql_ nicht beteiligt, und wenn Sie mysql_ verwenden, ist PDO nicht erforderlich.
Wenn Sie PDO ausschalten, ohne eine Zeile in Ihrem Code zu ändern, haben Sie kein Problem. Aber da Sie angefangen haben, sich mit PDO zu verbinden und Abfragen zu schreiben, müssen Sie es behalten und mysql_ aufgeben.
Vor einigen Jahren veröffentlichte das MySQL-Team ein Skript für Migration auf MySQLi . Ich weiß nicht, ob es angepasst werden kann, aber es ist offiziell.
Grundsätzlich stimmt die Antwort von Jani Hartikainen! Ich habe seine Antwort positiv bewertet. Was auf meinem System (basierend auf Ubuntu 15.04) fehlte, war die Aktivierung der PDO-Erweiterung in meiner php.ini
extension=pdo.so
extension=pdo_mysql.so
starte den webserver neu (zb mit "sudo service apache2 restart") -> alles in ordnung :-)
Um herauszufinden, wo sich Ihre derzeit aktive php.ini-Datei befindet, können Sie phpinfo () oder einige andere Hinweise verwenden: https://www.ostraining.com/blog/coding/phpini-file/
Installieren Sie zunächst die erforderlichen PDO-Teile, indem Sie den Befehl Sudo apt-get install php*-mysql
Ausführen. Dabei ist * ein Versionsname von PHP wie 5.6, 7.0, 7.1, 7.2
extension=pdo.so
extension=pdo_mysql.so
in Ihrer INI-Datei und starten Sie den Server per Befehl neu
Sudo service Apache2 restart
Mit dieser Option wird eine zusätzliche Sicherheitsebene zwischen der Benutzeroberfläche und der Datenbank implementiert. Mithilfe dieser Ebene können Daten normalisiert werden, bevor sie in Ihre Datenstruktur eingefügt werden. (Hauptstädte sind Hauptstädte, keine führenden oder nachgestellten Leerzeichen, alle Daten sind ordnungsgemäß gebildet.)
Es gibt jedoch einige Nuancen, die Sie möglicherweise nicht kennen.
Zunächst haben Sie bis jetzt wahrscheinlich alle Ihre Abfragen in einer ähnlichen Form wie die URL geschrieben und die Parameter über die URL selbst übergeben. Mit dem PDO erfolgt dies alles auf der Ebene der Benutzeroberfläche. Die Benutzerschnittstelle übergibt den Ball dem PDO, der ihn ins Feld trägt und für ein 7-Punkte-TOUCHDOWN in die Datenbank einpflanzt. Er erhält sieben Punkte, weil er ihn dort erhalten hat und so viel sicherer als die Weitergabe von Informationen über die URL getan hat .
Sie können Ihre Site auch auf SQL-Injection härten, indem Sie eine Datenschicht verwenden. Wenn Sie diese Zwischenschicht verwenden, die der EINZIGE "Player" ist, der mit der Datenbank selbst kommuniziert, können Sie sicher erkennen, wie viel sicherer dies sein kann. Schnittstelle zur Datenebene zur Datenbank, Datenebene zur Datenbank zur Datenebene zur Schnittstelle.
Und:
Indem Sie beim Schreiben Ihres Codes Best Practices implementieren, sind Sie mit dem Ergebnis viel zufriedener.
Zusätzliche Quellen:
Betreff: MySQL Funktionen in der URL php dot net/manual/de/ref dot pdo-mysql dot php
Betreff: Dreischichtige Architektur - Sicherheit für Ihre Anwendungen https://blog.42.nl/articles/introducing-a-security-layer-inyour-application-architecture/
Betreff: Objektorientiertes Entwerfen mit UML Wenn Sie mehr darüber erfahren möchten, ist dies das beste Buch auf dem Markt. Grady Booch war der Vater von UML http://dl.acm.org/citation.cfm ? id = 291167 & CFID = 241218549 & CFTOKEN = 82813028
Oder erkundigen Sie sich bei bitmonkey. Da ist eine Gruppe, mit der du sicher viel lernen könntest.
>
>
Wenn Sie einen CakePHP Docker Container mit MySQL benötigen, habe ich zu diesem Zweck ein Docker-Image erstellt! Kein Grund zur Sorge, es einzurichten. Es funktioniert einfach!
So installiere ich in einem Ubuntu-basierten Image:
https://github.com/marcellodesales/php-Apache-mysql-4-cakephp-docker/blob/master/Dockerfile#L8
RUN docker-php-ext-install mysql mysqli pdo pdo_mysql
Das Erstellen und Ausführen Ihrer Anwendung ist nur ein Prozess von zwei Schritten (vorausgesetzt, Sie befinden sich im aktuellen Verzeichnis der App):
$ docker build -t myCakePhpApp .
$ docker run -ti myCakePhpApp