{"id":54,"date":"2008-09-19T09:36:16","date_gmt":"2008-09-19T07:36:16","guid":{"rendered":"https:\/\/wpethzprd.ethz.ch\/id\/2008\/09\/19\/sicherheitslocher-in-websites-verhindern\/"},"modified":"2008-09-20T09:50:23","modified_gmt":"2008-09-20T07:50:23","slug":"sicherheitslocher-in-websites-verhindern","status":"publish","type":"post","link":"https:\/\/blogs.ethz.ch\/id\/2008\/09\/19\/sicherheitslocher-in-websites-verhindern\/","title":{"rendered":"sicherheitsl\u00f6cher in websites verhindern"},"content":{"rendered":"<p>eben sind wir auf ein sicherheitsrelevantes problem in einer bei uns gehosteten website gestossen. wir m\u00f6chten diesen vorfall nutzen, um sie auf diese problematik hinzuweisen. wir werden dieses thema beim n\u00e4chsten ETH-W4 (siehe <a href=\"http:\/\/www.w4.ethz.ch\/\">www.w4.ethz.ch<\/a> ebenfalls zur sprache bringen).<br \/>\n<!--more-->insbesondere wenn eine website mit frames aufgebaut und mit PHP programmiert ist, so wird h\u00e4ufig der inhalt des eigentlichen ausgabe-frames mit einem statement wie diesem ausgegeben:<\/p>\n<p><tt>include $seite;<\/tt><\/p>\n<p>wird die variable $seite als parameter \u00fcbergeben und nicht auf ihren inhalt gepr\u00fcft, so \u00f6ffnet dies t\u00fcr und tor f\u00fcr missbrauch. so erlaubt es die ausf\u00fchrung von beliebigem PHP-code der von einer beliebigen website geladen wird. m\u00f6glich ist z.b. ein aufruf wie dieser:<\/p>\n<p><tt>http:\/\/www.SITE.ethz.ch\/index.php?seite=http:\/\/www.ra.ethz.ch\/phpinfo.php<\/tt><\/p>\n<p>ein solcher aufruf bewirkt, dass das PHP-programm phpinfo.php von der website <a href=\"http:\/\/www.ra.ethz.ch\/\">www.ra.ethz.ch<\/a> heruntergeladen und auf dem webserver, auf welchem die website SITE gehostet wird, ausgef\u00fchrt wird. das kann zu sehr unangenehmen dingen missbraucht werden.<\/p>\n<p>achten sie deshalb beim programmieren von solchen konstrukten unbedingt darauf, dass der inhalt der variablen vor dem include entsprechend gepr\u00fcft wird &#8211; dies gilt nicht nur f\u00fcr PHP-programme.<\/p>\n<p>im obigen beispiel k\u00f6nnte ein filter zum abblocken etwa so aussehen:<\/p>\n<p><tt>$pattern = '\/^http|^https|^url|^ftp|:|www\/';<br \/>\nif(preg_match($pattern, $_GET[\"seite\"])) $seite=\"index.htm\";<br \/>\ninclude $seite<\/tt><\/p>\n<p>auf diese weise wird unterbunden, dass PHP-code von einer fremden website auf unseren server \u00fcbertragen und dort ausgef\u00fchrt werden kann.<\/p>\n<p><strong>wir bitten sie dringend bei der programmierung ihrer website darauf zu achten, dass kein fremder code \u00fcbertragen und auf unserem server ausgef\u00fchrt werden kann.<\/strong><br \/>\nbei allf\u00e4lligen fragen stehen wir gerne zur verf\u00fcgung.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>eben sind wir auf ein sicherheitsrelevantes problem in einer bei uns gehosteten website gestossen. wir m\u00f6chten diesen vorfall nutzen, um sie auf diese problematik hinzuweisen. wir werden dieses thema beim n\u00e4chsten ETH-W4 (siehe www.w4.ethz.ch ebenfalls zur sprache bringen).<\/p>\n","protected":false},"author":880,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1179,898],"tags":[1282,1283,1284,891,148],"class_list":["post-54","post","type-post","status-publish","format-standard","hentry","category-mail-web","category-support","tag-php","tag-programmierung","tag-sicherheit","tag-web","tag-www"],"_links":{"self":[{"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/posts\/54","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/users\/880"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/comments?post=54"}],"version-history":[{"count":0,"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/posts\/54\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/media?parent=54"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/categories?post=54"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/tags?post=54"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}