ich php lernen und wurden im Anschluss an die OOP eine Datenklasse Tutorial Erstellung bei phpbridge.orgPhp Einfügen von Daten zu MySQL von Web Form sicher
Im Tutorial Daten, die sie nehmen Form von einem Pfosten und in die Datenbank einfügen. Hier
ist der Code:
Schritt 1: Das Formular
<h2>New Topic</h2>
<form action="add.php" method="POST">
<label>
Title: <input type="text" name="title">
</label>
<br>
<label>
Description:
<br>
<textarea name="description" cols="50" rows="20"></textarea>
</label>
<br>
<input type="submit" value="Add Topic">
</form>
Schritt 2 Php Datei
<?php
require 'TopicData.php';
if (isset($_POST) && sizeof($_POST) > 0) {
$data = new TopicData();
$data->add($_POST);
}
?>
Schritt 3
Die Funktion in TopicData.php enthalten
public function add($data)
{
$query = $this->connection->prepare(
"INSERT INTO topics (
title,
description
) VALUES (
:title,
:description
)"
);
$data = [
':title' => $data['title'],
':description' => $data['description']
];
$query->execute($data);
}
Meine Frage ist in Bezug auf Sicherheit. Bevor diese Daten in eine Datenbank eingefügt werden, wäre es nicht empfehlenswert, jedes Feld des Formulars über die Funktion filter_input() auszuführen. Sollten diese auch durch filter_var() laufen?
Wenn dies erforderlich ist, wie genau würde der Filtercode aussehen?
Danke!
Der einzige Grund, den Sie filtern, ist, wenn Sie Einschränkungen haben, was passieren kann in einem bestimmten Bereich. Hast du irgendwelche Grenzen, was ein Titel oder eine Beschreibung enthalten kann? – tadman
@tadman - Ich habe keine Beschränkungen für den Titel oder die Beschreibung. Ich hatte jedoch den Eindruck, niemals direkt aus Sicherheitsgründen auf $ _Post zuzugreifen, sondern benutze immer die Funktion filter_input(). Beschrieben hier: https://www.phparch.com/2010/07/never-use-_get-again/ – user1609391
Dieser Artikel kann auch aus der Steinzeit stammen, aber es ist nicht alles falsch. Die Sache ist, dass Sie auf einen Typ beschränken müssen, wie Integer oder Float oder E-Mail, aber für einfache alte Strings ist es komplizierter. Was ist "gültig"? Normalerweise müssen Sie das genauer in Ihrem Code definieren. – tadman