{"id":243,"date":"2019-10-21T13:21:01","date_gmt":"2019-10-21T13:21:01","guid":{"rendered":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/?p=243"},"modified":"2020-05-06T14:24:07","modified_gmt":"2020-05-06T14:24:07","slug":"lets-talk-about-security-validate-all-input","status":"publish","type":"post","link":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/","title":{"rendered":"Let&#8217;s Talk About Security \u2013 Validate All Input"},"content":{"rendered":"\n<p>Im <a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-digital-identity\/\">letzten Beitrag<\/a> hat Sebastian Sicher eine Login-Maske f\u00fcr seine Schl\u00fcsseldienst-Website erstellt. Dort bin ich auf bekannte Sicherheitsl\u00fccken sowie m\u00f6gliche Vorkehrungen gegen diese eingegangen. Es sollte nur Nutzern der Zugriff auf das System gestattet sein, denen diese Rechte bei der Registrierung auf der Website zugeordnet wurden.\u00a0<\/p>\n\n\n\n<p>Nun k\u00fcmmert sich Sebastian darum, dass die Nutzer die gew\u00fcnschten Funktionalit\u00e4ten der Website nutzen k\u00f6nnen. Die Internetseite ist in der Lage, Bilder, Dateien oder Texte auf den Server hochzuladen. Die hochgeladenen Dateien werden daraufhin vom System weiterverarbeitet und auf entsprechenden Server-Pfaden abgelegt. Sebastian geht davon aus, dass nur \u201eauserkorene\u201c Nutzer Zugriff auf das System haben und vernachl\u00e4ssigt die Sicherheitsvorkehrungen nach dem Login. Es muss jedoch davon ausgegangen werden, dass diese Nutzer unbewusst Schadsoftware besitzen und diese ungewollt in das System hochladen. Aus diesem Grund muss jeder Nutzer als potenzielle Gefahr eingestuft werden. Auf Sebastians Website muss daher der Datenverkehr kontrolliert und verifiziert werden. Hier r\u00fcckt der Punkt \u201eValidate All Input\u201c oder zu Deutsch \u201eValidierung aller Eingaben\u201c in den Fokus.<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"430\" src=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1-600x430.jpg\" alt=\"Nahaufnahme Laptop, davor miteinander vernetzte Icons\" class=\"wp-image-485\" srcset=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1-600x430.jpg 600w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1-1024x734.jpg 1024w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1-768x550.jpg 768w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1-1536x1101.jpg 1536w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1-640x459.jpg 640w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1-1200x860.jpg 1200w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1-1920x1376.jpg 1920w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1.jpg 2000w\" sizes=\"auto, (max-width: 639px) 98vw, (max-width: 1199px) 64vw, 600px\" \/><figcaption><em>Abbildung 1: Validate All Input; <a href=\"https:\/\/www.freepik.es\/fotos-vectores-gratis\/fondo\">Foto de Fondo creado por creativeart &#8211; www.freepik.es<\/a><\/em><\/figcaption><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Das Ziel der Validierung ist es zu verifizieren, dass die in das System eingehenden Daten keinen Schaden anrichten oder daf\u00fcr sorgen, dass Informationen hinausgeleitet werden. Die Validierung sollte so fr\u00fch wie m\u00f6glich geschehen, damit die Daten des externen Systems Sebastians Seite so wenig wie m\u00f6glich manipulieren k\u00f6nnen. Selbst wenn es sich um Systeme handelt, denen vertraut wird, m\u00fcssen die eingehenden Informationen \u00fcberpr\u00fcft werden. Dies gilt zum Beispiel auch f\u00fcr Partner, deren Daten zur Weiterverarbeitung notwendig sind. Es gibt keine hundertprozentige Versicherung, dass die Partnersysteme nicht korrumpiert sind. Die Validierung sollte zuallererst auf der semantischen und syntaktischen Ebene durchgef\u00fchrt werden. Die Datei sollte den logischen Aufbau des entsprechenden Dateiformates besitzen und der Inhalt sollte mit der geforderten Eingabe \u00fcbereinstimmen. Auf folgende Punkte sollte bei der Validierung geachtet werden.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. Black- und Whitelisting<\/strong><\/h2>\n\n\n\n<p>Dies ist die einfachste Methode, die von Sebastian implementiert werden kann. F\u00fcr den Upload eines Bildes muss \u00fcberpr\u00fcft werden, ob es wirklich nur m\u00f6glich ist, Bild-Formate hochzuladen. In einem Bilder-Upload-Feld sollte es nicht m\u00f6glich sein, Skripte, welche im Nachhinein von innen heraus angreifen k\u00f6nnen, auf das System hochzuladen. Es w\u00e4re allerdings m\u00f6glich, Dateien hochzuladen, die \u00e4u\u00dferlich das korrekte Format, im Inhalt jedoch &lt;SCRIPT&gt;-Tags besitzen. Solche Dateien k\u00f6nnen Skripte ausf\u00fchren, obwohl das Datei-Format gepr\u00fcft wurde. Ein solches Vorgehen nennt man Cross-Site-Scripting (XSS), dabei handelt es sich um eine Art Injection, mit dem Angreifer sich Zugriff auf das System verschaffen k\u00f6nnen. Daher sollte nicht nur eine kurze Sichtpr\u00fcfung stattfinden, sondern auch der Inhalt der jeweiligen Datei \u00fcberpr\u00fcft werden.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. Begrenzungen (Min &amp; Max)<\/strong><\/h2>\n\n\n\n<p>Es sollte auch festgelegt werden, in welchem Werte-Bereich die Eingaben und Dateien sich befinden. Es muss sich nicht immer um den Upload einer Datei handeln. Es k\u00f6nnen auch Strings verschickt werden, die im Nachhinein in der Datenbank gespeichert werden. Dementsprechend sollte bei der Eingabe eines Datums oder einer Zahl darauf geachtet werden, dass sie beispielsweise die richtige L\u00e4nge besitzen. Beim Upload von Dateien sollte darauf geachtet werden, dass keine Gigabyte-gro\u00dfen Dateien importiert werden, wenn es sich nur um ein einfaches Profilbild handelt. S\u00e4mtliche dieser Min- und Max-Grenzen-Betrachtungen sind klassische Testszenarien, die von jedem professionellen QA-Team beobachtet werden. Ein spezielles Beispiel f\u00fcr solche Gr\u00f6\u00dfenbegrenzungen ist der \u201eBillion-Laughs-Attack\u201c. Dabei handelt es sich um XML-Dateien, die eine Entit\u00e4t im Header definieren. Diese bestehen aus mehreren \u201eLOL\u201c-Strings, die sich selbst durch den verschachtelten Aufruf verzehnfachen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    &lt;!--?xml version=\"1.0\"?-->\n     &lt;!--ELEMENT lolz (#PCDATA)-->\n     &lt;!--ENTITY lol1 \"&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;\"-->\n     &lt;!--ENTITY lol2 \"&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;\"-->\n     &lt;!--ENTITY lol3 \"&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;\"-->\n     &lt;!--ENTITY lol4 \"&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;\"-->\n     &lt;!--ENTITY lol5 \"&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;\"-->\n     &lt;!--ENTITY lol6 \"&amp;#038;lol5;&amp;#038;lol5;&amp;#038;lol5;&amp;#038;lol5;&amp;#038;lol5;&amp;#038;lol5;&amp;#038;lol5;&amp;#038;lol5;&amp;#038;lol5;&amp;#038;lol5;\"-->\n     &lt;!--ENTITY lol7 \"&amp;#038;lol6;&amp;#038;lol6;&amp;#038;lol6;&amp;#038;lol6;&amp;#038;lol6;&amp;#038;lol6;&amp;#038;lol6;&amp;#038;lol6;&amp;#038;lol6;&amp;#038;lol6;\"-->\n     &lt;!--ENTITY lol8 \"&amp;#038;lol7;&amp;#038;lol7;&amp;#038;lol7;&amp;#038;lol7;&amp;#038;lol7;&amp;#038;lol7;&amp;#038;lol7;&amp;#038;lol7;&amp;#038;lol7;&amp;#038;lol7;\"-->\n     &lt;!--ENTITY lol9 \"&amp;#038;lol8;&amp;#038;lol8;&amp;#038;lol8;&amp;#038;lol8;&amp;#038;lol8;&amp;#038;lol8;&amp;#038;lol8;&amp;#038;lol8;&amp;#038;lol8;&amp;#038;lol8;\"-->\n    ]>\n    &lt;lolz>&amp;lol9;&lt;\/lolz><\/code><\/pre>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Bei diesem Beispiel wird 1.000.000.000 mal der String \u201eLOL\u201c in den Speicher des Systems geladen. Je nach Hardwarest\u00e4rke des Systems kann dies zum Zusammenbruch f\u00fchren, wenn diese Datei gelesen wird. Die Menge und Gr\u00f6\u00dfe des Strings k\u00f6nnen noch gesteigert werden und es k\u00f6nnten mehrere solcher Dateien gleichzeitig hochgeladen werden. In solchen Situationen ist es daher notwendig, dass Systeme ab einer gewissen Gr\u00f6\u00dfe den Prozess beenden, um sich selbst zu sch\u00fctzen. Dies w\u00e4re keine Sicherheitsl\u00fccke, die Informationen leakt, allerdings kann sie dazu verwendet werden, das System zum Absturz zu bringen. Und dieser kann wiederum dazu genutzt werden, weitere Ma\u00dfnahmen zum Eindringen in unser System zu ergreifen.<\/p>\n\n\n\n<p>F\u00fcr die Tester unter euch ist der \u201eBillions-Laugh-Attack\u201c vielleicht eine interessante Testm\u00f6glichkeit f\u00fcr eure Testsysteme.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Client- und Server-Verifikation<\/strong><\/h2>\n\n\n\n<p>Es muss sichergestellt werden, dass die Eingabevalidierung nicht nur auf dem Client, sondern auch auf dem Server stattfindet. Auf Web-Applikationen ist es m\u00f6glich, die JavaScripts mit Hilfe eines Proxys oder Direktanfragen zum Server zu umgehen. Daher ist eine beidseitige Sicherung die empfohlene Variante. Wenn vom Client \u00fcberpr\u00fcft wird, dass es sich um eine JPG-Datei handeln muss und erst nach dieser \u00dcberpr\u00fcfung die Datei hochgeladen wird, dann k\u00f6nnte von der Serverseite die \u00dcberpr\u00fcfung vernachl\u00e4ssigt werden. Doch wenn der Angreifer die genauen Adressen und den Aufbau dieser Upload-Anfrage an den Server mit Netzwerk\u00fcberwachungstools ausliest, ist es ihm m\u00f6glich, mit REST-Tools eine eigene Upload-Anfrage zu erstellen, die ihn die Client-seitige \u00dcberpr\u00fcfung \u00fcbergehen l\u00e4sst. Somit w\u00e4re ein Angreifer in der Lage, direkt auf dem Server gew\u00fcnschte Skripte abzulegen, die dazu genutzt werden, Zugriff auf den Server zu bekommen oder Informationen auszulesen. Darum m\u00fcssen vor und nach dem Upload die Dateien \u00fcberpr\u00fcft werden.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Serverseitige Steuerung<\/strong><\/h2>\n\n\n\n<p>Ein weiterer Punkt, der beachtet werden sollte, ist die Speicherort-Bestimmung. Diese sollte dem Server \u00fcberlassen werden und nicht dem Client. Je nachdem wie viel der Angreifer aus den Skripten des Clients herauslesen konnte, kann er mit diesen Informationen einen \u00dcberblick vom Server-Aufbau bekommen und hat somit eine gr\u00f6\u00dfere Angriffsfl\u00e4che. Des Weiteren sollte eine Datei auch vom Server umbenannt werden, sobald diese auf dem konfigurierten Speicherpfad abgelegt wird. Dies sorgt daf\u00fcr, dass Skriptinhalte, falls sie in der Datei \u00fcbersehen wurden und auf den eigenen Dateinamen zugreifen w\u00fcrden, nicht ausgef\u00fchrt werden k\u00f6nnten, da die gew\u00fcnschte Datei in diesem Falle nicht vorhanden w\u00e4re.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>    \\server\\test\\uploads\\Testupload.JPG<\/code><\/pre>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>&#8212;<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>    \\server\\test\\uploads\\TE123ST321UPZEZELOAUIUID.JPG<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Diese Punkte k\u00f6nnen QA-seitig leicht gepr\u00fcft werden, indem die Server-Verzeichnisse nach einem Test-Upload \u00fcberpr\u00fcft und die sich dort befindenden Upload-Dateien analysiert werden.<\/p>\n\n\n\n<p>Au\u00dferdem gibt es Software, die auf den Servern nach Malware sucht und die hochgeladenen Daten direkt untersucht. Testseitig kann hier Schadsoftware auf den Server hochgeladen werden, um solche Sicherheitsl\u00fccken zu verifizieren. Solche Tests sollten allerdings vorher mit dem Systemverantwortlichen abgesprochen werden.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. Regular-Expressions<\/strong><\/h2>\n\n\n\n<p>Die Erstellung von Regular-Expressions f\u00fcr eine spezifische Aufgabe ist eine gro\u00dfe Hilfe f\u00fcr das Schlie\u00dfen von Sicherheitsl\u00fccken. Man erlaubt f\u00fcr die gew\u00fcnschten Eingaben nur die Characters, die das System verarbeiten kann. Es ist nicht notwendig, den kompletten UTF-16 zu erlauben, wenn f\u00fcr eine Postleitzahl nur die Ziffern ben\u00f6tigt werden. Somit grenzt man f\u00fcr jedes Eingabefeld die m\u00f6glichen Risiken ein. Diese sollten dann auch wieder Client- und Server-seitig \u00fcberpr\u00fcft werden. Auch ein wichtiger Leitsatz f\u00fcr die Sicherheit bei Regular-Expressions ist es, KEINE Wildcards zu verwenden.<\/p>\n\n\n\n<p>Einfache Expression f\u00fcr E-Mail-Adresse:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>    &#91;a-zA-Z]@&#91;a-zA-Z].&#91;a-zA-Z]<\/code><\/pre>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Hier wird eine einfache Regular-Expression f\u00fcr E-Mail-Adressen verwendet, die allerdings noch viel weiter verfeinert werden k\u00f6nnte.<\/p>\n\n\n\n<p>Verfeinerte Expression f\u00fcr E-Mail-Adresse:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>    ^&#91;\\w-\\.\\{\\}#\\+\\&amp;\\-]{1,}\\@(&#91;\\da-zA-Z-\\{\\}#]{1,}\\.){1,}&#91;\\da-zA-Z-]{2,3}$<\/code><\/pre>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Da man bei E-Mail-Adressen eine sehr gro\u00dfe Auswahl hat, ist es schwer, eine sehr eingrenzende Regular-Expression hierf\u00fcr zu schreiben, allein wegen der gro\u00dfen Menge an Sonderzeichen. Zum Gl\u00fcck existieren viele Frameworks, die solche Funktionen bereits implementiert haben und einem bei der \u00dcberpr\u00fcfung helfen.<\/p>\n\n\n\n<p>Dies waren nur ein paar der Punkte, die bei der Schlie\u00dfung von Sicherheitsl\u00fccken beachtet werden sollten. Es sollte auch vermerkt werden, dass es meist besser ist, bekannte Frameworks zu verwenden, als sich selbst Funktionalit\u00e4ten auszudenken. Einerseits weil diese Frameworks erprobt und \u00fcber die Zeit gewachsen sind und andererseits weil sie sich updaten, sobald neue Sicherheitsl\u00fccken auftauchen.<\/p>\n\n\n\n<p>Bekannte Frameworks f\u00fcr Input Validation:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Django Validators<\/li><li>FluentValidation<\/li><li>Apache Commons Validators<\/li><li>Express Validator<\/li><\/ul>\n\n\n\n<p>In dem Framework \u201eFluentValidation\u201c wird dem Entwickler die Validierung von Regular-Expression, String-Eingaben u.v.m. sehr vereinfacht. Das Framework ist so aufgebaut, dass man f\u00fcr die Variablen einer Klasse, die von einem Nutzer auf der Oberfl\u00e4che der Website eingegeben werden, einfache und \u00fcbersichtliche Verifikationsfunktionen nutzen kann. Sebastian hat eine kleine Klasse f\u00fcr seine Schl\u00fcsseldienst-Kunden erstellt, diese nennt er \u201eSchluesseldienst\u201c. Die registrierten Nutzer tragen \u00fcber ein Anmeldeformular die n\u00f6tigen Informationen f\u00fcr diese Klasse ein. Dabei handelt es sich um den Firmennamen, Adresse, Email-Adresse und Kreditkartennummer.&nbsp; Diese Informationen werden dazu genutzt, die Klasse zu erstellen. Doch bevor die Klasse dazu verwendet wird, die Informationen in der Datenbank zu speichern, in der die ungepr\u00fcften Daten Schaden anrichten k\u00f6nnten, werden sie \u00fcber die Funktionalit\u00e4ten des Frameworks \u00fcberpr\u00fcft.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-medium\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"362\" src=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_2-600x362.png\" alt=\"Ausschnit von Code f\u00fcr FluentValidation\" class=\"wp-image-486\" srcset=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_2-600x362.png 600w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_2-1024x618.png 1024w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_2-768x463.png 768w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_2-1536x927.png 1536w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_2-640x386.png 640w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_2-1200x724.png 1200w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_2.png 1546w\" sizes=\"auto, (max-width: 639px) 98vw, (max-width: 1199px) 64vw, 600px\" \/><figcaption><em>Abbildung 2: FluentValidation<\/em><\/figcaption><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Sollten bei der \u00dcberpr\u00fcfung Fehler auftauchen, werden uns diese dokumentiert ausgegeben. Somit sichert man vor dem Speichern der Daten den korrekten Inhalt der Informationen.<\/p>\n\n\n\n<p>Damit schlie\u00dfe ich den zweiten Teil meines Sicherheits-Talks ab. Ich hoffe, ich konnte euch mit diesem Blogbeitrag einen kleinen \u00dcberblick f\u00fcr die Validierung von Eingaben auf euren Systemen geben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit der Validierung soll verhindert werden, dass die in das System eingehenden Daten Schaden anrichten oder Informationen hinausgeleitet werden.<\/p>\n","protected":false},"author":19,"featured_media":485,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","footnotes":""},"categories":[10,11],"tags":[85,86,87,88,89,90,91,92,93,94,95,62,84],"topics":[226],"class_list":["post-243","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-qualitaetssicherung","category-web","tag-regular-expression","tag-billion-laughs-attack","tag-malware","tag-django-validators","tag-validation","tag-black-und-whitelisting","tag-input-validation","tag-fluentvalidation","tag-apache-commons-validators","tag-express-validator","tag-verifikation","tag-security","tag-schadsoftware","topics-security"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Let&#039;s Talk About Security \u2013 Validate All Input - ZEISS Digital Innovation Blog<\/title>\n<meta name=\"description\" content=\"Die Validierung aller Eingaben soll verhindern, dass die in das System eingehenden Daten Schaden anrichten oder Informationen hinausgeleitet werden.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Let&#039;s Talk About Security \u2013 Validate All Input - ZEISS Digital Innovation Blog\" \/>\n<meta property=\"og:description\" content=\"Die Validierung aller Eingaben soll verhindern, dass die in das System eingehenden Daten Schaden anrichten oder Informationen hinausgeleitet werden.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/\" \/>\n<meta property=\"og:site_name\" content=\"Digital Innovation Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ZEISSDigitalInnovation\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-21T13:21:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-06T14:24:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1433\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Neco Giedrojc\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ZEISS_di\" \/>\n<meta name=\"twitter:site\" content=\"@ZEISS_di\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Neco Giedrojc\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"9\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/\",\"name\":\"Let's Talk About Security \u2013 Validate All Input - ZEISS Digital Innovation Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1.jpg\",\"datePublished\":\"2019-10-21T13:21:01+00:00\",\"dateModified\":\"2020-05-06T14:24:07+00:00\",\"author\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/636a70d9f661e239161bd72d164b9942\"},\"description\":\"Die Validierung aller Eingaben soll verhindern, dass die in das System eingehenden Daten Schaden anrichten oder Informationen hinausgeleitet werden.\",\"breadcrumb\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/#primaryimage\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1.jpg\",\"contentUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1.jpg\",\"width\":2000,\"height\":1433,\"caption\":\"Nahaufnahme Laptop, davor miteinander vernetzte Icons\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Let&#8217;s Talk About Security \u2013 Validate All Input\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#website\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/\",\"name\":\"Digital Innovation Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/636a70d9f661e239161bd72d164b9942\",\"name\":\"Neco Giedrojc\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/giedrojc_neco-scaled-e1588663640620-150x150.jpg\",\"contentUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/giedrojc_neco-scaled-e1588663640620-150x150.jpg\",\"caption\":\"Neco Giedrojc\"},\"description\":\"Neco Giedrojc schloss sich kurz nach seinem Studienabschluss im Bereich \u201eComputer Engineering\u201c dem Testbereich der ZEISS Digital Innovation an und arbeitet dort als Tester. Dabei befasst er sich in seinem Hauptprojekt aktuell mit dem Integrationstest komplexer Systeme.\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/author\/necogiedrojc\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Let's Talk About Security \u2013 Validate All Input - ZEISS Digital Innovation Blog","description":"Die Validierung aller Eingaben soll verhindern, dass die in das System eingehenden Daten Schaden anrichten oder Informationen hinausgeleitet werden.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/","og_locale":"de_DE","og_type":"article","og_title":"Let's Talk About Security \u2013 Validate All Input - ZEISS Digital Innovation Blog","og_description":"Die Validierung aller Eingaben soll verhindern, dass die in das System eingehenden Daten Schaden anrichten oder Informationen hinausgeleitet werden.","og_url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/","og_site_name":"Digital Innovation Blog","article_publisher":"https:\/\/www.facebook.com\/ZEISSDigitalInnovation\/","article_published_time":"2019-10-21T13:21:01+00:00","article_modified_time":"2020-05-06T14:24:07+00:00","og_image":[{"width":2000,"height":1433,"url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1.jpg","type":"image\/jpeg"}],"author":"Neco Giedrojc","twitter_card":"summary_large_image","twitter_creator":"@ZEISS_di","twitter_site":"@ZEISS_di","twitter_misc":{"Verfasst von":"Neco Giedrojc","Gesch\u00e4tzte Lesezeit":"9\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/","name":"Let's Talk About Security \u2013 Validate All Input - ZEISS Digital Innovation Blog","isPartOf":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/#primaryimage"},"image":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1.jpg","datePublished":"2019-10-21T13:21:01+00:00","dateModified":"2020-05-06T14:24:07+00:00","author":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/636a70d9f661e239161bd72d164b9942"},"description":"Die Validierung aller Eingaben soll verhindern, dass die in das System eingehenden Daten Schaden anrichten oder Informationen hinausgeleitet werden.","breadcrumb":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/#primaryimage","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1.jpg","contentUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1.jpg","width":2000,"height":1433,"caption":"Nahaufnahme Laptop, davor miteinander vernetzte Icons"},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/lets-talk-about-security-validate-all-input\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/"},{"@type":"ListItem","position":2,"name":"Let&#8217;s Talk About Security \u2013 Validate All Input"}]},{"@type":"WebSite","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#website","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/","name":"Digital Innovation Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/636a70d9f661e239161bd72d164b9942","name":"Neco Giedrojc","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/image\/","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/giedrojc_neco-scaled-e1588663640620-150x150.jpg","contentUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/giedrojc_neco-scaled-e1588663640620-150x150.jpg","caption":"Neco Giedrojc"},"description":"Neco Giedrojc schloss sich kurz nach seinem Studienabschluss im Bereich \u201eComputer Engineering\u201c dem Testbereich der ZEISS Digital Innovation an und arbeitet dort als Tester. Dabei befasst er sich in seinem Hauptprojekt aktuell mit dem Integrationstest komplexer Systeme.","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/author\/necogiedrojc\/"}]}},"author_meta":{"display_name":"Neco Giedrojc","author_link":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/author\/necogiedrojc\/"},"featured_img":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/201910_Security_Validate_All_Input_1-600x430.jpg","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/qualitaetssicherung\/\" class=\"advgb-post-tax-term\">Qualit\u00e4tssicherung<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">Web<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Qualit\u00e4tssicherung<\/span>","<span class=\"advgb-post-tax-term\">Web<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">Regular-Expression<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">Billion-Laughs-Attack<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">Malware<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">Django Validators<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">Validation<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">Black- und Whitelisting<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">Input Validation<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">FluentValidation<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">Apache Commons Validators<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">Express Validator<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">Verifikation<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">Security<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/web\/\" class=\"advgb-post-tax-term\">Schadsoftware<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Regular-Expression<\/span>","<span class=\"advgb-post-tax-term\">Billion-Laughs-Attack<\/span>","<span class=\"advgb-post-tax-term\">Malware<\/span>","<span class=\"advgb-post-tax-term\">Django Validators<\/span>","<span class=\"advgb-post-tax-term\">Validation<\/span>","<span class=\"advgb-post-tax-term\">Black- und Whitelisting<\/span>","<span class=\"advgb-post-tax-term\">Input Validation<\/span>","<span class=\"advgb-post-tax-term\">FluentValidation<\/span>","<span class=\"advgb-post-tax-term\">Apache Commons Validators<\/span>","<span class=\"advgb-post-tax-term\">Express Validator<\/span>","<span class=\"advgb-post-tax-term\">Verifikation<\/span>","<span class=\"advgb-post-tax-term\">Security<\/span>","<span class=\"advgb-post-tax-term\">Schadsoftware<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Posted 7\u00a0Jahren ago","modified":"Updated 6\u00a0Jahren ago"},"absolute_dates":{"created":"Posted on Oktober 21, 2019","modified":"Updated on Mai 6, 2020"},"absolute_dates_time":{"created":"Posted on Oktober 21, 2019 1:21 p.m.","modified":"Updated on Mai 6, 2020 2:24 p.m."},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/posts\/243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/comments?post=243"}],"version-history":[{"count":13,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/posts\/243\/revisions"}],"predecessor-version":[{"id":544,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/posts\/243\/revisions\/544"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/media\/485"}],"wp:attachment":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/media?parent=243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/categories?post=243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/tags?post=243"},{"taxonomy":"topics","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/topics?post=243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}