HTML Tags $_POST variabeln

Alles, was nicht in die anderen Foren passt, kannst du hier loswerden.
Antworten
swid
Beiträge: 83
Registriert: 25. Mai 2015, 11:37

HTML Tags $_POST variabeln

Beitrag von swid »

Hallo,
ich bin dran, ein primitives Plugin zu basteln, welches einem einen simplen HTML Text aus der DB holt und anzeigt. Nun brauche ich noch ein Backend dafür und bin auch schon soweit, als dass ich mittels ckEditor das ganze Editieren kann. Leider verlier ich aber beim Speichern immer alle HTML Tags auf dem Text. Vermutlich aus diesem Grund :D :
Admidio lässt generell über alle übergebenen $_GET und $_POST Varialben die Funktionen strip_tags und addslashes laufen. Damit ist es zum einen nicht möglich HTML-Code in eine Variable einzubauen, sowie SQL-Injection einfach durchzuführen.
Nun - ich find einfach nicht raus, wie ich das umgehen kann. In eurem Message-Modul macht ihr das gleiche (bzw ich seh den Unterschied nicht) beim schreiben in adm_messages_content -> msc_message.
Kann mich da jemand aufklären?

Grüsse, swid
weissst
Developer
Beiträge: 342
Registriert: 4. Nov 2011, 18:07
Wohnort: 54xx

Re: HTML Tags $_POST variabeln

Beitrag von weissst »

Hallo swid,

grundsätzlich kannst du per $_POST['text'] immer den Text bekommen, den du auch in das Feld eingegeben hast. - Ohne jede Prüfung. - der hinweis den du gelesen hast, der steht dort, weil wir in admidio für Übergaben grundsätzlich eine Funktion verwenden:

$postText = admFuncVariableIsValid($_POST, 'text', 'html');

in dieser Funktion werden dann ein paar plausibilitätsprüfungen und korrekturen.
man kann über weitere parameter auch standartwerte festlegen oder überprüfen.

am besten du suchst mal in der source doku danach:
http://www.admidio.org/dokusource/

lg
Stefan
XimeX
Developer
Beiträge: 1148
Registriert: 12. Jul 2015, 13:21
Wohnort: Austria

Re: HTML Tags $_POST variabeln

Beitrag von XimeX »

@weisst:

ich glaub nicht dass das so funktionieren wird da die tags schon vorher rausgeschmissen werden.
Schauts mal folgenden Code an:

adm_program/system/common.php Z 46-49

Code: Alles auswählen

// remove HMTL & PHP-Code from all parameters
$_GET    = admStrStripTagsSpecial($_GET);
$_POST   = admStrStripTagsSpecial($_POST);
$_COOKIE = admStrStripTagsSpecial($_COOKIE);
adm_program/system/string.php Z 48-75

Code: Alles auswählen

/**
 * removes html, php code and blancs at beginning and end
 * of string or all elements of array without ckeditor variables !!!
 * @param string[] $srcArray
 * @return string[]
*/
function admStrStripTagsSpecial($srcArray)
{
    foreach($srcArray as $key => $value)
    {
        if($key !== 'ecard_message' // ckeditor-variable
        && $key !== 'ann_description'
        && $key !== 'dat_description'
        && $key !== 'gbc_text'
        && $key !== 'gbo_text'
        && $key !== 'lnk_description'
        && $key !== 'msg_body'
        && $key !== 'plugin_CKEditor'
        && $key !== 'room_description'
        && $key !== 'usf_description'
        && $key !== 'mail_smtp_password')
        {
            $srcArray[$key] = strStripTags($value);
        }
    }

    return $srcArray;
}
swid
Beiträge: 83
Registriert: 25. Mai 2015, 11:37

Re: HTML Tags $_POST variabeln

Beitrag von swid »

DANKE DANKE DANKE für den tip mit dem file string.php. ich hab mich echt langsam gefragt und war kurz vor dem platzen :)
merci euch beiden für den schnellen support!
oliver
Beiträge: 238
Registriert: 25. Nov 2014, 19:47

Re: HTML Tags $_POST variabeln

Beitrag von oliver »

Hallo swid,

genau diese Funktionalität ist doch bereits im Modul "Announcement" realisiert. Du musst das Rad ja gar nicht neu erfinden.

Besten Gruß
Oliver
swid
Beiträge: 83
Registriert: 25. Mai 2015, 11:37

Re: HTML Tags $_POST variabeln

Beitrag von swid »

Hallo oliver,

genau - das habe ich auch gesehen und darum oft "gespickt" bzw kopiert aus dem Announcement Modul. Dass ich ein Plugin geschrieben habe hat folgenden Grund:
  • - allem voran der Reiz, selber auszuprobieren, wie gut bzw. schlecht meine php und sql Kenntnisse sind
  • - ich brauche ein zusätzliches Modul (Announcement ist auch aktiv für eben Ankündigungen)
  • - Es soll nur einen Datenbankeintrag geben, der verändert werden kann, sonst erstellen mir meine User (bzw Leiter) 100 Einträge, da Sie nicht verstehen, wie man den one and only Eintrag editiert. --> Es muss DAU kompatibel sein.
und hier trat eben das Problem auf mit dem HTML code, da ich nicht herausgefunden habe, warums im Modul Announcement funktioniert und bei meinem (kopierten & "erleichterten")Code nicht...
Soweit zu meinen Beweggründen...
Grüsse, swid
Antworten