Wie $_Post entschärfen

nchristoph

Erfahrenes Mitglied
Hallo zusammen,

Ich arbeite gerade an einer Funktion für meine Seite um das erstellen neuer Inhalte einfacher zu machen.

Ich erstelle im ACP eine neue Seite und beim speichern wird der Inhalt direkt in eine neu erstellte Datei geschrieben.

Allerdings ist das ja so ein RIESEN Sicherheitsloch, da ja alles ausgeführt wird, was man eingibt.

Also z.B.
PHP:
<?php phpinfo(); ?>
wird einfach geparst und die PHPInfo Seite wird angezeigt.

Wie kann ich $_POST so entschärfen, dass ich ohne bedenken anderen Zugriff auf mein ACP geben kann.

Mein momentaner Code sieht so aus:

PHP:
    $datei = fopen("../incdateien/".$_POST['name'].".php", "x");
    $titel = "<h1>".$_POST['titel']."</h1><br />"."\n";
    $titel .= "<div class=\"post\">".$_POST['text']."</div><br />";
    fwrite($datei,$titel);
    fclose($datei);
    //echo "test";

Ich hab mir schon den Sicherheitstread durchgelesen, die Forum suche und Google bemüht. Alles ohne wirklichen Erfolg.

Das einzige, das ich gefunden habe, ist der Hinweis auf Striptags. Dann wird aber auch jegliche HTML/CSS Formatierung des Textes hinfällig oder?

Kann mir wer nen Tip geben?
 
Zuletzt bearbeitet:
Richtig, die HTML-formatoerungen gehen natürlich acuh verloren. Du musst da schon whitelisten bzw mit sogenannten BB-codes arbeiten um zu formatieren.
 
Was meinst Du mit ACP? Den Opcode Cache? Damit kann man Seiten erstellen?
Bin etwas verwirrt.

Ich habe mir ein AdminControlPanel (ACP) geschrieben.

BBCodes habe ich schon überlegt und auch für das Frontend für die Kommentare umgesetzt. Im ACP möchte ich jedoch mehr Kontrolle über das Design des Textes.

Gibt es eine Möglichkeit, PHP und JScript Code auszufiltern?

Ich auch schon das PHP Manual durchgesucht, allerdings auch mit relativ wenig Erfolg.

Ich finde einfach keine Lösung, Schadcode herauszufiltern und trotzdem Formatierungen beizubehalten.
 
Funktioniert z.B. mit CKEditor.
Speichert folgende Eingabe:
Code:
<?php phpinfo(); ?>

<script type="text/javascript" language="JavaScript">
  function fokus () {
    document.getElementById('username').focus();
  }
</script>
als
Code:
<p>&lt;?php phpinfo(); ?&gt;</p>
<p>&lt;script type=&quot;text/javascript&quot; language=&quot;JavaScript&quot;&gt;<br>
&nbsp; function fokus () {<br>
&nbsp;&nbsp;&nbsp; document.getElementById('username').focus();<br>
&nbsp; }<br>
&nbsp; &lt;/script&gt;</p>
Könnte man auch manuell erledigen, aber Du suchst ja was wo man auch BB, Formatierungen, Bilder usw. verarbeiten kann und da braucht man das Rad nicht neu erfinden.
 
CKEditor und TinyMCE filtern natürlich beide clientseitig "Schadcode" heraus, d.h. jemand könnte die Formular-Anfrage fälschen und dir an dein PHP-Skript tatsächlich ungefilterteten Code senden.

Du müsstest - wenn schon - auf der Serverseite immernoch filtern, z.B. mit HTML Purifier.
 
Zurück