HTML in Formular verbieten

GoldenEye

Erfahrenes Mitglied
Hi,

ich habe ein Kontakt forular auf meiner Seite. Jeder kann in das Textfeld eine Nachricht schreiben und auf absenden drücken. Diese wird dann in der DB gespeichert und in meinem Admin cp angezeigt.

So jetzt wäre es doch dringend nötig, die html Eingabe zu verbieten.
Nach langem suchen, habe ich diesen link hier gefunden: http://www.php.net/manual/de/function.strip-tags.php

Ich hab aber keine Ahnung, wie ich diesen Tag anwende. Muss ich denn bei der Ausgabe der Ergebnisse, oder bei der Eingabe verwenden?

Hier mal mein script, das alle Kommentare aus der DB ausließt und sie mir im Admin cp anzeigt:

PHP:
<?php
    error_reporting(E_ALL);
    include ("../login_check.php"); 
    include 'config.php';
    // Konfigurationsdatei laden

    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

    $sql = "SELECT
		id,
		date,
                name,
		mail,
                data
            FROM
                feedback
            ORDER BY
                date ASC;";
    
    $result = mysql_query($sql) OR die(mysql_error());

include "style/header.tpl"; 

while($row = mysql_fetch_assoc($result)) {
      echo "<p><b>ID:</b>&nbsp;".$row['id']."<br/><b>Datum:</b>&nbsp;".$row['date']."<br/><b>Name:</b>&nbsp;".$row['name']."<br/><b>Email Adresse:</b>&nbsp;".$row['mail']."<br/><b>Feedback Text:</b>&nbsp;".$row['data']."<br/><a href=\"feed_delete.php?id=".$row['id']."\">Löschen</a></p>";
    }        

?>

meine Frtage ist dann gleich auch noch: reichen diese Sicherheitsmaßnahmen, oder muss ich ncoh was anderes beachten?

gruß
 
Hallo!

Einfach die Variable des gesendeten Formularfeldes durch die Funktion jagen, fertig.

PHP:
<?php
strip_tags($_GET['blubb']);
?>

Azi
 
Azi hat gesagt.:
Hallo!

Einfach die Variable des gesendeten Formularfeldes durch die Funktion jagen, fertig.

PHP:
<?php
strip_tags($_GET['blubb']);
?>

Azi

da ich mit der Methode POST sende muss es strip_tags($_POST['blubb']) heißen, aber das ist ja auch ent so wichtig.
Nur soll ich des erste durch die Funktio jagen und dann den Datenbank eintrage machen, oder wie ich versteh das net ganze. könntest du mir vielleicht zeigen, an welcher stelle des scripts ich das einfühen soll? Also beim Nachrichten Eintrag oder beim Ausgeben?

gruß
 
Dat ist egal!
würde es aber grundsätzlich beim Eintragen machen, wenn es ganz sicher ist, dass du eh nie html code erlauben möchtest!
achja kannst auch einfach die Funktion htmlspecialchars(String) benutzen....
Gute Nacht
 
GarGod hat gesagt.:
Dat ist egal!
würde es aber grundsätzlich beim Eintragen machen, wenn es ganz sicher ist, dass du eh nie html code erlauben möchtest!
achja kannst auch einfach die Funktion htmlspecialchars(String) benutzen....
Gute Nacht

also müsste es dann so aussehen:


htmlspecialchars($_POST['Inhalt'])
und dann des ganze insert kram?

welche Funktion ist denn besser?
 
Machs doch einfach einmal so :

PHP:
$sql = 'INSERT INTO 
                    `deine_tabelle`
        SET
                    `text` = "'.mysql_real_escape_string(strip_tags($_POST['text'])).'"';
 
Hi
Du kannst auch mehrere Funktionen miteinander verknüpfen, z.b.

1. trim = Entfernt Whitespaces (oder andere Zeichen) am Anfang und Ende eines Strings.
2. strip_tags = Entfernt HTML- und PHP-Tags aus einem String.
3. htmlspecialchars = Wandelt Sonderzeichen in HTML-Codes um.

Die komplette Zeile würde dann so aussehen:
PHP:
$_POST['text'] = trim(strip_tags(htmlspecialchars($_POST['text'], ENT_QUOTES)));
 
bUTschy hat gesagt.:
Hi
Du kannst auch mehrere Funktionen miteinander verknüpfen, z.b.

1. trim = Entfernt Whitespaces (oder andere Zeichen) am Anfang und Ende eines Strings.
2. strip_tags = Entfernt HTML- und PHP-Tags aus einem String.
3. htmlspecialchars = Wandelt Sonderzeichen in HTML-Codes um.

Die komplette Zeile würde dann so aussehen:
PHP:
$_POST['text'] = trim(strip_tags(htmlspecialchars($_POST['text'], ENT_QUOTES)));

danke, und das heißt, dass diese version dann auch sicher wäre?
und kann ich nachdem ich das so durchlaufen habe einfach mit der variable $_POST ganz normal weiter arbeiten?
 
Man sollte auch noch beachten, dass das ganze in eine DB geschrieben wird.
Stichwort SQL-Injection

(wollts nur anmerken, die benötigten Funktionen kenne ich nicht wirklich)
 
Hallo!
DaRealMC hat gesagt.:
Man sollte auch noch beachten, dass das ganze in eine DB geschrieben wird.
Stichwort SQL-Injection

(wollts nur anmerken, die benötigten Funktionen kenne ich nicht wirklich)
Die benötigte Funktion wurde von RS9999 schon angewand..... aber von den Nachfolgern wieder verworfen ---> mysql_real_escape_string().

Gruss Dr Dau
 
Zurück