sql >> Databasteknik >  >> RDS >> Mysql

Är Markdown (med strip_tags) tillräckligt för att stoppa XSS-attacker?

Jag tror att om du tar bort en HTML-tagg från inmatningen kommer du att få något ganska säkert -- förutom om någon hittar ett sätt att injicera några riktigt trassliga data i Markdown, så att det genererar ännu mer rörigt utdata ^^

Men här är två saker som jag tänker på:

Första: strip_tags är ingen mirakelfunktion :den har några brister...
Till exempel kommer den att ta bort allt efter "<", i en situation som denna :

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

Resultatet jag får är:

string '10 appels is ' (length=13)

Vilket inte är så trevligt för dina användare :-(


Andra: En eller annan dag kanske du vill tillåta vissa HTML-taggar/attribut; eller, även idag, kanske du vill vara säker på att Markdown inte genererar vissa HTML-taggar/attribut.

Du kanske är intresserad av något som HTMLPurifier :det låter dig ange vilka taggar och attribut som ska behållas, och filtrerar en sträng så att bara de finns kvar.

Den genererar också giltig HTML-kod -- vilket alltid är trevligt ;-)



  1. Få en lista över datum mellan två datum

  2. Oracle SQL:Förstår du beteendet hos SYS_GUID() när det finns i en inline-vy?

  3. Aggregerad funktion i MySQL - lista (som LISTAGG i Oracle)

  4. MySQL - CONCAT - Finns det något sätt att sammanfoga en sträng och använda den som en variabel?