Hallo gn#36,
gn#36 hat geschrieben:Wirklich sicher gegenüber z.B. cross site request forgery (XSRF) bekommst du es nur, wenn du ein Form Token erzeugst und mit einbindest. Ansonsten kann im Prinzip jeder, der dir was unterschieben möchte, dich auf eine präparierte Seite locken und deinen vermutlich vorhandenen Cookie nutzen um mutwillig eigenen Text in die Tabelle zu schreiben.
Hm.., wie soll ein Angreifer von den eingefügten Textfeld wissen? Ich will keinen generellen Schutz für das Internet haben, sondern nur ein, an einer bestimmten eingebautes Textfeld (
siehe dazu den Code, den ich eingestellt habe) , in das man nicht jeden Mist eingeben kann, der zur Ausführung gelangt. Da phpBB3 sicher ist, will ich nicht durch so etwas das ganze System unsicher machen. Solche Textfelder/Kommentarfelder sind nicht wirklich etwas ungewöhnliches, finde ich sie doch überall im Netz. Ich habe mir die Umsetzung jetzt nicht wirklich als ein besonderes Problem für einen Programmierer vorgestellt.
gn#36 hat geschrieben: Sofern bei der Anzeige keine Skripte ausgeführt werden ist das per se nicht unbedingt wer weiß wie schlimm, vor allem wenn der Text hinterher nur von Admins und Moderatoren gesehen werden kann.
Trotzdem sollte es abgesichert sein.
gn#36 hat geschrieben:Ansonsten kommt es sehr stark darauf an, wie genau du das hinterher darstellen willst. Wenn du den Text beispielsweise an der gleichen Stelle anzeigen möchtest wie er eingegeben wurde, dann muss in der Datenbank ja z.B. auch noch ganz genau gespeichert werden, an welcher Stelle ein Text eingegeben wurde. Sollen sie nur alle an einer Stelle gesammelt werden ist das ganze einfacher, dann frage ich mich aber, ob du nicht vielleicht einfach mit einem internen Forum besser fährst.
Ich mach es einmal deutlicher an einer Datei. Ich möchte ein Textfeld in die Galerie von @nickvergessen einbauen (viewimage.html), in dem, zum Beispiel für einen Wettbewerb, die Moderatoren Notizen eingeben können. Diese Notizen sollten natürlich genau dort angezeigt werden,
wo sie eingegeben wurden, ansonsten würde das platzierte Textfeld Sinnfrei sein. Auch sollen sie so angezeigt werden,
wie sie eingegeben wurden. Das es anders auch möglich sein soll, ist mit erst gar nicht in den Sinn gekommen.
Um trotzdem einfach nur Text einzufügen brauchst du eigentlich nicht viel:
Code: Alles auswählen
<?php
... Seiteninitialisierung von phpBB wie in allen anderen Seiten auch, einfach kopieren ...
// Berechtigung abfragen: Nur Moderatoren und Admins
if(!($auth->acl_get('m_') || $auth->acl_getf_global('m_')) && !$auth->acl_get('a_'))
{
trigger_error('NOT_AUTHED');
}
$text = request_var('text', '');
//Wurde was eingegeben?
if(empty($text))
{
trigger_error('TEXT_EMPTY');
}
//Text entweder jetzt oder später vor der Anzeige filtern:
$text = htmlentities($text, ENT_QUOTES);
// ggf. weitere Felder der Tabelle ebenfalls über das Array füllen:
$sql = 'INSERT INTO tabelle_oder_konstante_einsetzen ' . $db->sql_build_array('INSERT', array(
'feldname' => $text,
'user_id' => $user->data['user_id'], //Für die Benutzerzuordnung
//Weitere Felder die notwendig sind?
));
//Ausführen
$db->sql_query($sql);
trigger_error('TEXT_ENTERED');
Ich danke Dir für den Code. Der deckt sich in einigen Zeilen mit dem, den ich gefunden habe. Nun habe ich aber wie schon zu Beginn das Problem, das ich die Tabelle nicht erstellen kann und auch deren Inhalt nicht genau kenne. Ein entsprechender SQL-Befehl für Deinen Code wäre da sicherlich hilfreich.
Ich fasse einmal zusammen. Mit dem Code für das HTML-Textfeld (
siehe meinen ersten Beitrag dazu) rufe ich durch den Klick auf "den OK-Button (
oder senden oder was auch immer) die Datei auf, in der Dein Code (
siehe dazu Deinen Beitrag) steht. Nun wird Dein Code "gestartet" und trägt den Inhalt aus dem HTML-Textfeld in die Tabelle ein und der wird dort gespeichert und bleibt so dauerhaft angezeigt. Da es scheinbar nichts fertiges dazu gibt, wäre es für mich hilfreich, wenn ich solches Vorgehen, idealerweise auf Deutsch, nachlesen könnte. Ich habe absolut keine Ahnung, wie ich die Tabelle in der SQL-Datenbank erzeugen kann und dann alles noch zu verbinden. Wenn ich das könnte, hätte ich nicht dieses Thema erstellt. Wahrscheinlich habe ich zu Beginn einfach nur die falschen Seiten erwischt, die mich mit ihren ganzen Warnhinweisen bekloppt gemacht und Mutlos haben.
Ich danke Dir für Deinen Beitrag, vielleicht fühlen sich dadurch noch andere Programmierer inspiriert, ein paar erklärende Kommentare dazu zu verfassen. Aktuell habe ich gerade wohl eine Art "temporären" Gehirnkrampf und drehe mich gedanklich im Kreis.

Sobald der Krampf sich gelöst hat, werde ich derweil weiter im großen Netzwerk "Internet" nach Lösungen suchen, ich bin sicherlich nicht der einzige, der solche Ideen hat, sie aber nicht umsetzen kann. Nicht jeder hat Programmierer gelernt, es gibt noch eine Menge andere Berufe, die man lernen oder studieren kann, um sein Geld zu verdienen. Ich kann zum Beispiel wirklich gut mit Werkzeug umgehen und auch ganz große Maschinen und Geräte reparieren.
