sql >> Databáze >  >> RDS >> Mysql

Je Markdown (s strip_tags) dostatečný k zastavení útoků XSS?

Myslím, že odstraněním jakékoli HTML značky ze vstupu získáte něco docela bezpečného – kromě případů, kdy někdo najde způsob, jak do Markdownu vložit nějaká opravdu zpackaná data a nechat vygenerovat ještě více zmatený výstup ^^

Přesto mě napadají dvě věci:

První: strip_tags není zázračná funkce:má určité nedostatky...
Například v situaci, jako je tato, odstraní vše po '<':

$str = "10 appels is <than 12 apples";
var_dump(strip_tags($str));

Výstup, který dostanu, je:

string '10 appels is ' (length=13)

Což pro vaše uživatele není tak příjemné :-(


Druhá: Jednou nebo jindy možná budete chtít povolit některé HTML značky/atributy; nebo dokonce i dnes si můžete být jisti, že Markdown negeneruje některé HTML tagy/atributy.

Mohlo by vás zajímat něco jako HTMLPurifier :umožňuje vám určit, které značky a atributy mají být zachovány, a filtruje řetězec tak, aby zůstaly pouze ty.

Generuje také platný HTML kód -- což je vždy příjemné ;-)



  1. MySQL a JDBC s rewriteBatchedStatements=true

  2. Django - OperationalError:(2006, 'MySQL server zmizel')

  3. Jak provést LEVÝ ANTI SEMI JOIN v SQL Server

  4. C#:Ekvivalence datového typu Oracle s OracleDbType