Zabezpieczenie przed niebezpiecznymi znacznikami

0

Ogólnie ostatnio zastanawia mnie temat bezpieczeństwa tekstu wpisywanego przez użytkowników. A mianowicie tego jak działają strony napisane w php gdzie użytkownik dodaje np. posty i czy przy generowaniu ich strona napisana w php może zastosować tekst jako tekst a nie jako html. Mogę też przesyłać to do warstwy front endowej i generować przy js za pomocą innerText zamiast innerHtml, ale czy jest sposób, aby to zrobić w phpie?

0

Nie do końca jestem pewien, czy rozumem o co pytasz, więc zróbmy tak - rzuć okiem na http://php.net/manual/en/function.addslashes.php oraz http://php.net/manual/en/security.database.sql-injection.php i powiedz, czy może chodziło Ci o coś w tym stylu. A jeśli nie, to napisz swoje pytanie jeszcze raz, ale bardziej opisowo ;)

2

Chyba chodzi o to: http://php.net/manual/en/function.htmlentities.php

I nie ma użytkowników - każdy kto podaje dane w jakimkolwiek formularzu to atakujący. Trzeba przepuścić tylko i wyłącznie to co chcemy.

Edit: próbka kodu

    public function setText($text) {
        if ((strlen(trim($text)) >= 3) && (strlen(trim($text)) <= 60)) {
            $this->text = htmlentities(trim($text), ENT_QUOTES, "UTF-8");
            return $this;
        } 
        return false;
    }
1

@ccwrc troche źle to zrobiłeś. Dziś stosuję się zasade, że do bazy trafiają dane zvalidowane ale bez zmian, ochroną przez sql injenction ma ogarnąć pdo. Ochrona przed xss powinna być stosowana na wyjściu czyli za każdym wyświetleniem tych danych.

0


	function EscapeBadHTML($html){
        $html = stripslashes(strip_tags($html));
        return $html;
    };

1

Escapowanie stringa na wyjściu w laravelu.

    /**
     * Escape HTML special characters in a string.
     *
     * @param  \Illuminate\Contracts\Support\Htmlable|string  $value
     * @param  bool  $doubleEncode
     * @return string
     */
    function e($value, $doubleEncode = true)
    {
        if ($value instanceof Htmlable) {
            return $value->toHtml();
        }

        return htmlspecialchars($value, ENT_QUOTES, 'UTF-8', $doubleEncode);
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1