Guten Morgen zusammen,
ich arbeite aktuell als HiWi und mir wurde der Auftrag zugetragen eine Datenbank mit PHP und MySQL zu erstellen in der alle Vorträge und Fachartikel von unseren Mitarbeitern gespeichert werden können.
Da ich blutiger Anfänger (noch nicht eine Zeile PHP Code geschrieben) bin musste ich mir erstmal alles selber beibringen. Das Ergebniss nach 3-4 Tagen freut mich - denn es läuft wie gewollt!
Doch weil das Ganze nunmal online auf den Unternehmensserver soll stelle ich mir jetzt die Frage ob es so auch sicher genug ist. Schließlich möchte ich nicht schuld sein, wenn mit meinem Code nachher jemand die ganze Seite plättet.:P
Daher wäre es nett, wenn ein Experte einen professionellen Blick in meinen Code werfen könnte um mir eventuelle Sicherheitslücken aufzuzeigen.
Da es durch Formatierungen etc. durchaus komplex geworden ist poste ich hier mal nur ein paar Ausschnitte die ich spontan für wichtig halte. Wenn was entscheidenes fehlt, dann bitte ich um Rückmeldung.
Dann fang ich mal an:
Ich habe eine Seite in der die Daten eingegeben, geprüft und verarbeitet werden:
Die Eingabe der Werte erfolgt in der selben Seite etwa so (es wird ganz am Anfang geprüft ob dem Pflichtfeld 'Referent' ein Wert per POST übergeben wurde. Bei der überprüfung ändert sich der Wert von $errorClass['..'], sodass der User optisch per CSS auf das Fehlen des Pflichtfeldes aufmerksam gemacht werden kann):
Inhalt der mysql.php:
Und schließlich die Ausgabe der Werte auf einer anderen Seite (die Inhalte der Sortier- und Blätterfunktion sind ja unwichtig, denke ich:
Reicht die Verwendung von PDO schon zur Absicherung? Oder Bedarf es da noch mehr?
Würde mich über jeden Hinweis freuen
Gruß
kuchen
ich arbeite aktuell als HiWi und mir wurde der Auftrag zugetragen eine Datenbank mit PHP und MySQL zu erstellen in der alle Vorträge und Fachartikel von unseren Mitarbeitern gespeichert werden können.
Da ich blutiger Anfänger (noch nicht eine Zeile PHP Code geschrieben) bin musste ich mir erstmal alles selber beibringen. Das Ergebniss nach 3-4 Tagen freut mich - denn es läuft wie gewollt!
Doch weil das Ganze nunmal online auf den Unternehmensserver soll stelle ich mir jetzt die Frage ob es so auch sicher genug ist. Schließlich möchte ich nicht schuld sein, wenn mit meinem Code nachher jemand die ganze Seite plättet.:P
Daher wäre es nett, wenn ein Experte einen professionellen Blick in meinen Code werfen könnte um mir eventuelle Sicherheitslücken aufzuzeigen.
Da es durch Formatierungen etc. durchaus komplex geworden ist poste ich hier mal nur ein paar Ausschnitte die ich spontan für wichtig halte. Wenn was entscheidenes fehlt, dann bitte ich um Rückmeldung.
Dann fang ich mal an:
Ich habe eine Seite in der die Daten eingegeben, geprüft und verarbeitet werden:
PHP-Code:
//Datenbankeintrag:
include("mysql.php");
$stmt = $pdo->prepare('INSERT INTO `tutorial`.`vortraege` (`id`, `referent`, `titel`,...) VALUES (NULL, :referent, :titel,...)');
//Verschiedenste Werte
$stmt->bindParam(':referent', $_POST["referent"], PDO::PARAM_STR);
$stmt->bindParam(':titel', $_POST["titel"], PDO::PARAM_STR);
...
//Dateiupload
move_uploaded_file($_FILES['datei1']['tmp_name'], $file1url);
$stmt->bindParam(':file1url', $file1url, PDO::PARAM_STR);
...
$stmt->execute();
Code:
<td>Referent:</td> <td><input class="<?PHP echo $errorClass['referent'];?>" value="<?PHP if(!empty($_POST['referent'])) echo $_POST['referent']; ?>" type="text" size="35" name="referent">*</td> ... <td>1.Datei:</td> <td><input name="datei1" type="file"></td> ... <td><input name="submit" type="submit" value="Vortrag eintragen!"></td>
PHP-Code:
<?php
$dbhost = 'localhost';
$dbname = 'tutorial';
$dbuser = 'xxx';
$dbpass = 'xxx';
try{
$pdo = new PDO('mysql:host='.$dbhost.';dbname='.$dbname, $dbuser, $dbpass);
}
catch(PDOException $e) {
exit('Es konnte keine Verbindung zur Datenbank hergestellt werden!');
}
?>
PHP-Code:
//Datenabruf:
$abfrage = "SELECT * FROM vortraege $sortierfkt $blaetterfkt";
$stmt = $pdo->prepare($abfrage);
$stmt->execute();
//Ausgabe:
while($row = $stmt->fetch())
{
...
echo '<td class="'.$class.'">'.$row['referent'].'</td>';
echo '<td class="'.$class.'">'.$row['titel'].'</td>';
...
Würde mich über jeden Hinweis freuen

Gruß
kuchen
Kommentar