Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 23:41

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



htmlentities vs. htmlspecialchars

Discussion on htmlentities vs. htmlspecialchars within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1


 
aiimsh0ckz's Avatar
 
elite*gold: 158
Join Date: Apr 2012
Posts: 606
Received Thanks: 76
htmlentities vs. htmlspecialchars

GER:
-----
Hey Community,
wie der Titel es schon sagt:

htmlspecialchars() vs. htmlentities() - was benutzt ihr und warum?
-----

ENG:
------
Hey Community,
as the titles already says it:

htmlspecialchars() vs. htmlentities() - which one do you use and why?
-----

Greez, aiimsh0ckz.
aiimsh0ckz is offline  
Old 06/16/2016, 19:03   #2

 
Punisher.biz's Avatar
 
elite*gold: 0
Join Date: Feb 2014
Posts: 978
Received Thanks: 160
Keines von beidem ¯\_(ツ)_/¯

Ich wandle direkt die .html/.php in das richtige Format um, da kann ich dann umlaute und sonstiges nach Lust und Laune nutzen.
Punisher.biz is offline  
Old 06/17/2016, 07:32   #3


 
aiimsh0ckz's Avatar
 
elite*gold: 158
Join Date: Apr 2012
Posts: 606
Received Thanks: 76
@:

Geht um XSS-Injection. Also um die Strings ins passende Format zu setzen, um XSS zu vermeiden.
aiimsh0ckz is offline  
Old 06/17/2016, 10:34   #4

 
Punisher.biz's Avatar
 
elite*gold: 0
Join Date: Feb 2014
Posts: 978
Received Thanks: 160
@ nie was von gehört, xss header im webserver setzen sollte auch ausreichen.
Punisher.biz is offline  
Old 06/17/2016, 10:36   #5


 
aiimsh0ckz's Avatar
 
elite*gold: 158
Join Date: Apr 2012
Posts: 606
Received Thanks: 76
Hmm, davon hab ich wiederum noch nie was gehört. Schein wohl auch ganz nett zu sein.
aiimsh0ckz is offline  
Old 06/17/2016, 13:36   #6

 
Punisher.biz's Avatar
 
elite*gold: 0
Join Date: Feb 2014
Posts: 978
Received Thanks: 160
Ist halt besser, finde ich, vor allem wenn man mehrere Seiten hat, spart man sich Code und vor allem auch das Copy & Pasten bzw. neu schreiben des Codes.
Punisher.biz is offline  
Old 06/18/2016, 12:06   #7


 
Cholik's Avatar
 
elite*gold: 4
Join Date: Aug 2008
Posts: 6,783
Received Thanks: 4,992
Der Header an sich ist aber alles andere als sicher, zumal das ja auch von Browsern unterschiedlich gehandhabt wird. Firefox z.B. reagiert auf den Header meine ich immer noch nicht. ()

Und bspw Nutzung von htmlspecialchars bei einem Request auf alle eingehenden GET/POST Params ist ja auch kein großer Aufwand. Das selbe gilt für die Ausgabe direkt ins Template, zumal die meisten gängigen Frameworks mit Template-Engine sowas meist auch schon direkt unterstützen.
Cholik is offline  
Thanks
6 Users
Old 06/19/2016, 12:22   #8
 
krosswarrior's Avatar
 
elite*gold: 1278
Join Date: Dec 2011
Posts: 377
Received Thanks: 35
htmlentities() macht imho nur Sinn, wenn du was von fremden Usern/Seiten importierst, direkt darstellst und wirklich, wirklich sicher gehen willst, dass dabei nichts durchflutscht.
Der Nachteil ist dann natürlich, dass du deinen gesamten Text aufsplitten musst, falls du doch eins der Zeichen im RAW-Kontext nutzen willst (XML etc.).

Da man aber allgemein selten bis nie fremdes Material unbearbeitet übernehmen sollte, macht specialchars() am meisten Sinn, wenn dein Code lesbar bleiben soll. Ansonsten mit entities() drüber hauen. Den Output bearbeiten wirst du aber in jedem Fall müssen ->
krosswarrior is offline  
Old 06/20/2016, 07:38   #9


 
aiimsh0ckz's Avatar
 
elite*gold: 158
Join Date: Apr 2012
Posts: 606
Received Thanks: 76
Quote:
Originally Posted by Cholik View Post
Der Header an sich ist aber alles andere als sicher, zumal das ja auch von Browsern unterschiedlich gehandhabt wird. Firefox z.B. reagiert auf den Header meine ich immer noch nicht. ()

Und bspw Nutzung von htmlspecialchars bei einem Request auf alle eingehenden GET/POST Params ist ja auch kein großer Aufwand. Das selbe gilt für die Ausgabe direkt ins Template, zumal die meisten gängigen Frameworks mit Template-Engine sowas meist auch schon direkt unterstützen.
Ich hab mir ein eigenes Framework incl. CMS geschrieben (auf MVC-Basis). Da können "bestimmte" Leute dann auch was eintragen (KEIN! direkter Admin-Zugriff!). Und da brauch ich das dann. Weil selbst "sicher" ist nicht sicher

Ich probier mich gerade an Laravel aus, weil's ja noch einfacher sein soll. Atm. muss ich ja für eine Funktion in mehreren Pages was schreiben, was ziemlich aufwändig ist. Und weiß auch noch nicht ganz, ob das Laravel-Framework XSS-Scripting von sich selbst aus verhindert.
aiimsh0ckz is offline  
Old 06/20/2016, 09:21   #10
 
elite*gold: 0
Join Date: Oct 2011
Posts: 137
Received Thanks: 14
Quote:
Originally Posted by Punisher.biz View Post
@ nie was von gehört, xss header im webserver setzen sollte auch ausreichen.
Das reicht nicht. Gerade wenn du mit Datenbanken arbeitest, wirst du sicher damit an die grenzen kommen. Generell arbeite ich mit htmlentites, weil hier alle geeigneten Zeichen in HTML-Code umgewandelt wird.

So verhinderst du auch das man die Fremdcode unterschmuggelt, der dann beim Aufruf ausgeführt wird. Das geschieht durch die Umwandlung in HTML-Code. Schau mal da wird das eigentlich super erklärt. Und denkt nicht, das eine sicherung ausreichen wird. Das erschwert vielleicht ein wenig, macht die Seite oder das Framework nicht sicher. 100%iger Schutz gibt es nicht und wird es auch nicht geben.
darktown is offline  
Old 06/20/2016, 13:14   #11
 
elite*gold: 0
Join Date: Feb 2010
Posts: 112
Received Thanks: 29
Quote:
Originally Posted by aiimsh0ckz View Post
GER:
-----
Hey Community,
wie der Titel es schon sagt:

htmlspecialchars() vs. htmlentities() - was benutzt ihr und warum?
-----
Da gibt es eigentlich nur einen Fall an dem man es wirklich nutzen kann.
Und zwar bei der Ausgabe. Sprich deine View Kompontente kümmert sich darum deinen Text escaped auszugeben.
Es gibt durchaus auch andere Anwendungsfälle bei denen es sinnvoll sein kann, aber die sind eher selten in Gebrauch. Zb. wenn man Text im Javascript oder CDATA ablegen will ...


Wenn du Eingangsparameter filtern/sanitizen willst empfielt es sich die Filter Funktionen zu nutzen die es seit PHP5 gibt.

Hoffe das hilft dir weiter.

//edit:
Quote:
Atm. muss ich ja für eine Funktion in mehreren Pages was schreiben
Öhm, dann machst du etwas grundlegendes falsch Egal welches Framework oder ob selbstgeschriebenes. Lagere deine Funktion in eine Klasse oder wenigstens eine Include Datei aus und nutze dann selbige. Dann schreibst du die Funktion auch nur einmal
Waschbaerfell is offline  
Old 06/26/2016, 20:20   #12

 
elite*gold: 3
The Black Market: 113/0/0
Join Date: Oct 2013
Posts: 5,815
Received Thanks: 1,814
Quote:
Originally Posted by aiimsh0ckz View Post
GER:
-----
Hey Community,
wie der Titel es schon sagt:

htmlspecialchars() vs. htmlentities() - was benutzt ihr und warum?
-----

ENG:
------
Hey Community,
as the titles already says it:

htmlspecialchars() vs. htmlentities() - which one do you use and why?
-----

Greez, aiimsh0ckz.
Um XXS zu vermeiden solltest du folgenden Code nutzen

Code:
<?php echo htmlentities($deinstring, ENT_QUOTES, 'UTF-8');?>
Nevada' is offline  
Old 06/26/2016, 21:38   #13



 
Shawak's Avatar
 
elite*gold: 0
The Black Market: 259/0/0
Join Date: Apr 2010
Posts: 10,289
Received Thanks: 3,613
Du kannst dir diesbezüglich auch mal filter_var anschauen. Ist meiner Meinung nach eine sehr gute Alternative.

Shawak is offline  
Reply


Similar Threads Similar Threads
Htmlentities mit nl2br und datenbanktext ausgabe
12/02/2012 - Web Development - 4 Replies
Hey, hab 2 Probleme die ich noch nie im Leben hatte und bin wirklich ratlos da es eigentlich immer funktioniert hat: Habe einen text, wenn ich ihn jetzt stinknormal in Html einfüge geht er normal in die box und wenn er an den Rand kommt gehts in die nächste zeile, wenn ich genau den gleichen text aber aus der Datenbank hole und mit echo ausgebe ist alles in einer Zeile und zieht sich über die ganze seite. Desweitere funktioniert nl2br nicht mehr wenn htmlentities vorher gemacht wurde,...



All times are GMT +1. The time now is 23:42.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.