image

WordPress-websites gehackt via zeroday-lekken in drie plug-ins

dinsdag 3 oktober 2017, 09:53 door Redactie, 26 reacties

Aanvallers hebben een onbekend aantal WordPress-websites gehackt via zeroday-lekken in drie verschillende plug-ins. Het gaat om de plug-ins Appointments, Flickr Gallery en RegistrationMagic-Custom Registration Forms. De drie plug-ins hebben bij elkaar 21.000 actieve installaties.

Via de beveiligingslekken kunnen aanvallers op kwetsbare websites een php-backdoor installeren. De backdoor geeft aanvallers vervolgens volledige controle over de website, zo meldt securitybedrijf Wordfence. De ontwikkelaars van de drie plug-ins hebben na ontdekking van de aangevallen zeroday-lekken inmiddels updates uitgebracht en WordPress-beheerders die het betreft krijgen het advies die zo snel als mogelijk te installeren.

Reacties (26)
03-10-2017, 10:03 door Anoniem
3 plug-ins die samen 21.000 actieve installaties hebben zijn zeer kleine spelers in Wordpress.
Overigens is het geen specifiek Wordpress probleem, maar doet zich ook voor bij Android, apps en plug-ins moeten onderhouden en gecontroleerd worden, bij een update kan er al iets toegevoegd zijn wat niet te vertrouwen is.
03-10-2017, 10:05 door [Account Verwijderd]
[Verwijderd]
03-10-2017, 10:08 door Anoniem
Door OpenXOR: Echt mensen. Stop. Met. Wordpress! Het is en blijft gare onveilige troep.

Of gewoon geen plugins gebruiken.
03-10-2017, 10:24 door Anoniem
Door OpenXOR: Echt mensen. Stop. Met. Wordpress! Het is en blijft gare onveilige troep.

Wat is dan wel een veilig en vergelijkbaar alternatief volgens u?
03-10-2017, 10:26 door Anoniem
Word Press op zich is het probleem niet.

Word Press in de handen van niet competente website administrator, is het werkelijk gevaar.

Waar staan de basis intellingen al niet verkeerd (user enumeration, directory listing), waar worden onveilige jQuery bibliotheken netjes afgeserveerd? Hoe ontzaglijk veel Word Press websites draaien oude kwetsbare versies van de software en de plug-ins? Hoeveel hebben de 'same origin' van 3rd party code niet op orde (geen sri-hashes gegenereerd, geen CORS)?

Wat draait op kwetsbare (web)servers, brakke slecht geconfigureerde naamservers, heeft certificaats- en DNS issues?
Je wilt het echt niet weten, mensen...

En dit verhaal geldt niet alleen Word Press sites, ook websites met een ander CMS, vnml. die gebaseerd op PHP, kunnen er wat van.

Ik heb al opgegeven, dat het ooit nog echt goed komt. DNSSEC valt niet eens te upgraden zonder dat 6 miljoen globale gebruikers hun Internet dreigen te verliezen. Als je AS of hoster niets beters te bieden heeft? Huilen, huilen, huilen met de pet op....

luntrus
03-10-2017, 11:00 door [Account Verwijderd] - Bijgewerkt: 03-10-2017, 11:31
[Verwijderd]
03-10-2017, 11:08 door Anoniem
Door Anoniem: Word Press op zich is het probleem niet.

Word Press in de handen van niet competente website administrator, is het werkelijk gevaar.

Waar staan de basis intellingen al niet verkeerd (user enumeration, directory listing), waar worden onveilige jQuery bibliotheken netjes afgeserveerd? Hoe ontzaglijk veel Word Press websites draaien oude kwetsbare versies van de software en de plug-ins? Hoeveel hebben de 'same origin' van 3rd party code niet op orde (geen sri-hashes gegenereerd, geen CORS)?

Wat draait op kwetsbare (web)servers, brakke slecht geconfigureerde naamservers, heeft certificaats- en DNS issues?
Je wilt het echt niet weten, mensen...

Huilen, huilen, huilen met de pet op....

luntrus

Je kan van een arts/manager kinderdagverblijf/automonteur/piloot/verpleegster etc. niet verwachten dat zij vakkennis verwerven om blogsoftware te draaien. Het product is dus brak en de hosting is niet op orde.

Het werd 20 jaar geleden al hoog tijd dat er met passende consumentenwetgeving en kwaliteitscertificering werd gewerkt, en de sector zal daar om moeten vragen. Broddelwerk!
03-10-2017, 12:17 door Anoniem
Door OpenXOR: Echt mensen. Stop. Met. Wordpress! Het is en blijft gare onveilige troep.
Sorry je hebt er geen ballen verstand van of je verdiept je niet in de materie of je leest het onderwerp niet.
Hierboven wordt al geschreven dat het in de plu-ins zit.
03-10-2017, 13:11 door -karma4 - Bijgewerkt: 03-10-2017, 13:11
Door BansheePHP:
Door Anoniem:
Wat is dan wel een veilig en vergelijkbaar alternatief volgens u?
Probeer het Banshee PHP framework eens: https://www.banshee-php.org/. Voor een demo van Banshee, bekijk https://demo.banshee-php.org/.

Alsjeblieft zeg! Nog meer PHP zooi pluggen?

<phpbashing>Pas op potentiële (Banshee) klant -caveat emptor - het is en blijft PHP. (Een beetje professional wil nog liever dood worden gevonden dan geassocieerd worden met PHP.)</phpbashing>

Door BansheePHP:
Door Anoniem:
En dit verhaal geldt niet alleen Word Press sites, ook websites met een ander CMS, vnml. die gebaseerd op PHP, kunnen er wat van.
Tja, er zijn nu eenmaal veel op PHP gebaseerde CMS'en.

Inderdaad. Veel te veel als je het mij vraagt.
03-10-2017, 13:33 door Zeurkool
Door OpenXOR: Echt mensen. Stop. Met. Wordpress! Het is en blijft gare onveilige troep.
Echt OpenXOR. Stop. Met. Reageren. Het probleem zit 'm niet in Wordpress maar in de plug-ins zoals je kon lezen in het bericht.

Verder kan het schelen of je goedkope hosting afneemt waar geen controle is.
Als je een blog/site hebt, en je bent serieus bezig host je je site gewoon niet bij de allergoedkoopste, en gebruik je zo weinig mogelijk plug-ins. Simpel.
03-10-2017, 15:08 door [Account Verwijderd]
[Verwijderd]
03-10-2017, 15:14 door [Account Verwijderd]
[Verwijderd]
03-10-2017, 15:48 door -karma4
Door BansheePHP:
Door FOSS:
Alsjeblieft zeg! Nog meer PHP zooi pluggen?

<phpbashing>Pas op potentiële (Banshee) klant -caveat emptor - het is en blijft PHP. (Een beetje professional wil nog liever dood worden gevonden dan geassocieerd worden met PHP.)</phpbashing>
Haha. Hack me! I double dare you.

Dat was nog eens een film hè :-)

Door BansheePHP:Een beetje professional snapt dat de problemen in veel PHP websites niet PHP zelf als oorzaak hebben. PHP is een gemakkelijke en toegankelijke taal. Dat is fijn voor een ontwikkelaar, maar het trekt helaas ook veel prutsers aan. Die prutsers leveren onveilige code. PHP zelf is niet inherent onveiliger dan bijvoorbeeld Python, Java of C#. In die laatste talen is het net zo goed mogelijk om een gare onveilige website te maken.

Jawel hoor: PHP is hoe dan ook een slecht fundament. Qua veiligheid en onderhoudbaarheid.

https://youtu.be/B4klp5EKakk
03-10-2017, 17:40 door Anoniem
Door BansheePHP:
Door Anoniem:
Wat is dan wel een veilig en vergelijkbaar alternatief volgens u?
Probeer het Banshee PHP framework eens: https://www.banshee-php.org/. Voor een demo van Banshee, bekijk https://demo.banshee-php.org/.
Je bent nu een framework aan het vergelijken met een CMS. Dat zijn best wel verschillende dingen. Sterker nog het lijkt niet eens op elkaar.

Door Anoniem:
En dit verhaal geldt niet alleen Word Press sites, ook websites met een ander CMS, vnml. die gebaseerd op PHP, kunnen er wat van.
Tja, er zijn nu eenmaal veel op PHP gebaseerde CMS'en.
Blijkbaar over waar veel gebruikt wordt, ontstaan er problemen...... Goede gedachte......
03-10-2017, 18:49 door Anoniem
De core code van Word Press is best wel OK en wordt ook wel goed onder de loep genomen en bijgehouden hoor.
Het is bij de plug-ins, waar menigeen " de bietenbrug op gaat".

Oudere versies geïnstalleerd, nog erger verlaten code, waar de developer nooit meer iets voor uitbrengt.
Wachten op code injectie exploits, DOM XSS ellende...-> domxssscanner.com

Dan de algemene installatie en configuratie fouten (gedeeltelijk op naam te schrijven van de n00b die het instelt, gedeeltelijk ook op die van de host voor een dubbeltje op de eerste rang (gratis waar sub-domeinen ineens je sub-domeinen niet meer zijn, zoals bij afraid dot org).

Website security is nog vaak een ondergeschoven beveiligingskindje.

Kijk eens naar een site die niet meegegaan is met de techniek van onze tijd:
https://en.internet.nl/domain/oceanografiaoperacional.net/89900/

Kijk een naar een Tracker SSL extensie rapport voor onveilige connecties
(3rd party links, maar ook google api code links).

Er kan nog zo veel misgaan...

luntrus
03-10-2017, 19:32 door Anoniem
In den beginne was er PHP, een taal, waar men zich weinig bekommerde om beveiliging.

Het was een gemakkelijke taal en trok veel nieuwelingen aan, die er mee aan de gang gingen
en met een taal vol met mijnenvelden ging dan vaak de blinde de blinde leiden en vielen beiden in de gracht.
Denk aan het bekende schilderij "De Parabel der Blinden" van Pieter Breughel de Oude.

Tot versie 4.2.0. was PHP een zeer onveilige taal. Echt onveilige taal bestaat echter niet,
omdat een goed ontwerper zich kan aanpassen.

Met al de aandacht van hackers en vele exploitcode 'in het wild' bleef het onveilig in de mond der ontwerpers.
PHP draait ook als CGI en steeds hernieuwde re-initialisatie van script bij elk verzoek is gevaarlijk met het oog op SQL
injectie, maar met prepared statements kun je een hoop van die SQL ellende geheel vergeten.

De PHP interpreter is "borked" met zero bugs voor de API interpretatie/0

Mijn kapstok taal is het niet, maar de Italiaan F.R.A.V.I.A (R.I.P.). en franse resource hackers, hielden ervan.
Re: http://www.ki.ai/fravia/searchlores.org/phpregexspider.htm

Nog bijdragen geleverd aan F.R.A.V.I.A.'s "lores",
03-10-2017, 21:32 door [Account Verwijderd]
[Verwijderd]
03-10-2017, 23:25 door -karma4
Door BansheePHP:
Door FOSS:
Jawel hoor: PHP is hoe dan ook een slecht fundament. Qua veiligheid en onderhoudbaarheid.

https://youtu.be/B4klp5EKakk
Woaw. Wat een super goed argument. Hier kan het feit dat ik al 15 jaar vele websites (waarvan vele op basis van Banshee) zonder enig noemenswaardig probleem en zonder enig security incident host echt niet tegenop. Echt, wat een goed verhaal.

Tja... Websites die geen bezoekers trekken of om andere redenen weinig interessant zijn zullen niet snel worden aangevallen.
04-10-2017, 08:08 door Anoniem
Door FOSS: Tja... Websites die geen bezoekers trekken of om andere redenen weinig interessant zijn zullen niet snel worden aangevallen.
Security through obscurity.... Altijd een goede gedachte..... NOT. Je hebt meestal een stuk betere argumenten. Probeer je nu gewoon je gelijk te krijgen?

Je weet net zo goed, dat websites altijd aangevallen worden, maakt niet uit of ze zwaar gebruikt worden of niet.

Alle code heeft fouten, maakt niet uit waarin je het schrijft. Sommige programmeer talen is zijnwel gemakkelijker beter te maken, maar alles valt of staat met de kwaliteit van de code en programmeer.
04-10-2017, 09:33 door [Account Verwijderd]
[Verwijderd]
04-10-2017, 11:12 door Anoniem
Tja... Websites die geen bezoekers trekken of om andere redenen weinig interessant zijn zullen niet snel worden aangevallen

Hangt er maar van af wat een gemakkelijk doelwit is en aan welk misbruik er gedacht wordt.
04-10-2017, 14:26 door -karma4 - Bijgewerkt: 04-10-2017, 14:31
Door BansheePHP:
Door FOSS:
Tja... Websites die geen bezoekers trekken of om andere redenen weinig interessant zijn zullen niet snel worden aangevallen.
:D Goed zo knul. Slaap lekker.

Ik slaap inderdaad geweldig goed want ik gebruik geen PHP!
04-10-2017, 21:14 door Anoniem
Zie voor wat PHP onveiligheid naar de volgende code
Dit in reactie op sommige posters hier....

usage : function html_filter($content, &$result, $mode, &$Warning,$AllowedTags='',&$MissingTags)

Where : - $content is the original string content.
- $result is the filtered output string.
- $mode is a bitmask that define the behaviour of the function.
- $Warning is a returned array of warning messages describing every change done to $content.
- $AllowedTags is a list of tags that are allowed to be present in content with their eventual allowed attributes.
- $MissingTags is a returned string that will contain any closing tag that is missing from $content.


$mode must be defined as (MODE_STRIP|MODE_REPLACE) | (MODE_ALL|MODE_PARTIAL)

(MODE_STRIP|MODE_REPLACE) : define the action to be taken when filtering. Either strip or replace
(MODE_ALL|MODE_PARTIAL) : define which tags are allowed.
MODE_ALL mean filter all tags.
MODE_PARTIAL allows tags in $AllowedArray to be present.

The return value will be either RC_OK, no tags needed to be filtered or RC_MODIFIED, something needed to be filtered/added.

for a more detailled use of html_filter, have a look at mbs.php3 a messageBoard System that relies on this function for the
filtering of the posts.

History :
25 March 2001 :
- Added the $tabletags and some code in html_filter to filter tags that are only allowed insidehtml tables if they
appear outside table (Maarten).

1 november 2002 :
- bug correction : Warning: Undefined variable: xxx in /homepages/37/d23823115/htdocs/http/mbs/filter.inc on line 266

Contributors :
- Maarten
*/


define('MODE_STRIP', 0x01);
define('MODE_REPLACE', 0x00);
define('MODE_ALL', 0x02);
define('MODE_PARTIAL',0x00);

define('RC_OK', 0x00);
define('RC_MODIFIED', 0x01);
define('RC_MALFORMED', 0x02);

// This array *should* contain every possible tags. It is only used in the first pass of the filtering to differentiate
// '<' as a tag opener or as anything else.
$tags=array('b','u','i','pre','br','p','center','s','small','strike','sub','sup','tt','table','tr','td','th','font','hr','a','ul','ol','li','img','blockquote','code','em','strong','applet', 'kbd');

// Tags that are only allowed inside a table. They will be filtered if they
// appear outside a table. All elements must be uppercase.
$tabletags = array('TR', 'TD', 'TH');

function show_allowedtag($AllowedTags)
{
echo("<ul>\n");
reset($AllowedTags);
while (list($Tag, $Attribute)=each($AllowedTags))
{
echo("<li>&lt;$Tag&gt;");
if (!empty($Attribute)) echo(" with ($Attribute) attribute allowed");
}
echo("</ul>\n");

}

function html_filter($content, &$result, $mode, &$Warning,$AllowedTags='',&$MissingTags)
{
$MissingTags='';

global $tags;
global $tabletags;

//------new tags management routine--------
//We will replace ever occurance of < and > that doesn't enclose a tag (listed in $tags) by their html equivalent.
//$tags should be as full as possible. We are just trying to distinguish <tag> from other usages of < and >
//(normal 'less/greater than' meaning)

$newcontent='';

// '!' will be used as our preg expression delimiter, so we better _strip_ them all out.
$content = ereg_replace('!','&#33;',$content);

//Now we loop through the content to locate every <****>
//We should get something like '$reg[1]<$reg[2]>' Note the 's' :-)
//Where reg[1] is the part before the tag and reg[2] the *tag* itself
while(preg_match('!^(.*?)<([^><]*?)>!s',$content,$reg))
{
$chunk = preg_replace('!<!','&lt;',$reg[1]); //let's replace all < and > in $reg[1] as they aren't tags delimiter
$chunk = preg_replace('!>!','&gt;',$chunk);
$newcontent.=$chunk;

//Remove reg[0] from content (so the loop will hopefully end soon or later :-)
$content = preg_replace('!^'.preg_quote($reg[0]).'!','',$content);

//Now let's work on $reg[2] (the 'maybe' tag);
$chunk=$reg[2];
//if we can isolate a tag inside the < >, then we will check it.
if (preg_match('!\s*\/?([^\s]*)!',$chunk,$reg)) {
//If the *tag* found is really a tag, don't touch the < > otherwise replace them
if (in_array(strtolower($reg[1]),$tags)) $newcontent.='<'.$chunk.'>'; else $newcontent.='&lt;'.$chunk.'&gt;';
} else $newcontent .= '&lt;'.$chunk.'&gt;'; // nothing could be located inside the < > so we replace them.
}
//something could be left in $content (the ending part).
$chunk = preg_replace('!<!','&lt;',$content); //Simply replace < and >
$chunk = preg_replace('!>!','&gt;',$chunk);
$newcontent.=$chunk;

//copy 'filtered' content back
$content = $newcontent;

// -----Old malformation checking routine---------
// This one prevents any <> other than tags one to be present in the content ... so , not very usefull :-(
/*
//Let's first check if the tag is not malformed (maybe intentionnaly :-)
//remove all chars except < and >
$chunk = ereg_replace('[^<>]','',$content);
//now we should stay with only <> pairs, let's remove them
$chunk = ereg_replace('<>', '',$chunk);
//at this point we should stay with an empty line. Check it
if ($chunk!='') return RC_MALFORMED; //Line is NOT empty. We got a problem !!

*/

//------ This is the main filter section ------
//It will evaluate every tags in content and will either replace, remove or leave them depending on $mode and $AllowedTags list
//If any tags is replaced or removed, the action will be 'logged' in $Warnings.

$modified = FALSE; //did we modified anything ?
if ($AllowedTags=='') $mode|=MODE_ALL; //No tag list supplied, so we will work on ALL tags.
else if (count($AllowedTags)==0) $mode|=MODE_ALL; //if tag list is empty then we have to process ALL tags

$Filtered = ''; //This is where we will store the filter's result

//The following split is a smart trick i found at ....
//It will properly seperate tag text and normal text.
//Normal text will be in even numbered array element while tag text will be in odd ones
//and that in every possible cases :-)
$line = split('<[[:space:]]*|[[:space:]]*>',$content);

//Inside a PRE tags, we won't replace /n by <BR> to prevent blank lines
$InPre = FALSE; //at the beginning we can't be inside a <pre> tag
$InTable = 0; // Keeps track of the nesting of TABLEs in order to filter
// out any <tr> or <td> that are not inside a table. This variable is
// increased at every <table> and decreased at every </table>. At the
// beginning, we're not inside a table.

for ($i=0; $i<count($line); $i++) //Let's loop for every chunk of text
{ //Odd chunks = TAGS / even chunks = TEXT
if ($i%2) { //We have to process a tag text.
//let's first check if this is a <pre> tag.
if (preg_match("!^pre(?:\\s+.*|)\$!i",$line[$i])) $InPre = TRUE;
//or a </pre>
if (preg_match("!^/pre(?:\\s+.*|)\$!i",$line[$i])) $InPre = FALSE;

$TagOK=FALSE; //By default the TAG is not allowed

$OffendingAttr=''; //Just to tell people what was wrong withing this tag

if (!($mode&MODE_ALL)) { //If we are running in partial mode, we must check the tag against the allowed ones
reset($AllowedTags);
while (list($tag,$attribute_list)=each($AllowedTags)) { //loop for each allowed tag
if (preg_match("!^(/?)$tag(?:\\s+(.*)|)\$!i",$line[$i],$reg)) { //additional check need to be done on the tag attribute
$TagOK=TRUE;

if (empty($reg[2])) break; //if no attribute on this tag, then it is ok.

//If we got any attribute along this tag, let's process it.
$stuff = preg_replace('!".*?"!','""',$reg[2]); //replace all "xxxxx" with only "" (greedy preg_replace)
$stuff = preg_replace('!\s+!',' ',$stuff); //replace all multispace by 1 single space (simple ereg_replace)
$stuff = preg_replace('!\s?=\s?!','=',$stuff); //replace all ' = ' with '=' (simple ereg_replace)
//we should now stay with something like 'attr=value attr="" attr=value attr'
$stuff = preg_replace('!=[^\s]*!','',$stuff); //new let's remove those "=something" part
//now we should split on ' ' to get the array of attributes we have to check
$tag_attr_array = split(' ',$stuff);

//Before going any further, let's check if current Tag have any attribute allowed
if (empty($attribute_list)) {
$TagOK=FALSE; //No, so this tag is rejected
$OffendingAttr = $stuff; //just show all attributes rejected
break; //no attribute allowed for this tag !!
}

$allowed_attr_array = explode(',',$attribute_list);

reset($tag_attr_array); //let's check if all attribute are allowed for current tag
while(list(,$attr)=each($tag_attr_array)) {
$AttrOK=FALSE; //By default attribute is not allowed
reset($allowed_attr_array);
while(list(,$allowed_attr) = each($allowed_attr_array)) {
if (eregi($allowed_attr, $attr)) { //Tag attribute is found in allowed list, continue
$AttrOK=TRUE;
break;
}
}
if (!$AttrOK) {
$TagOK=FALSE;
$OffendingAttr.=$attr." ";
}
}
break; // no need to keep looping through allowed tags
}
} //End loop for each tag
}

//The code below is from Maarten.
// Keep track of TABLEs (to be able to filter any <tr> or <td> tags that
// are outside of tables).
if ($TagOK && (strtoupper($tag) == 'TABLE')) {
// Only count table tags that will not be filtered.
if (isset($reg[1]) && ($reg[1] == '/')) {
// This is a closing table tag.
if ($InTable>0) $InTable--;
} else {
// This is an opening table tag.
$InTable++;
}
}

if ($TagOK) {
if (!$InTable) {
// This tag appears outside any tables, so <tr> or <td> are not
// allowed.
$touppertag = strtoupper($tag);
// Check the list of all tags that are not allowed outside any tables.
if (in_array($touppertag, $tabletags)) {
// It's a <tr> or <td> (or the closing versions of any of these
// tags, and they are not allowed here, outside tables.
$TagOK=FALSE;
break;
}
}
}

if ($TagOK && (strtoupper($tag)==$tag)) //We got a accepted tag. Now let's check if this tag is one of those that NEED to be closed soon or later
{
if (isset($reg[1]) && ($reg[1]=='/')) { //This is a closing tag.
if (!isset($list[$tag]) || ($list[$tag]==0)) $TagOK=FALSE; //We can't have a closing tag before the opening one !!
else $list[$tag]--;
} else { //This is an opening tag. Increment tag counter
if (!isset($list[$tag])) $list[$tag]=0;//Bug correction 11/2002 :Warning: Undefined xxxe: list in /homepages/37/d23823115/htdocs/http/mbs/filter.inc on line 266
$list[$tag]++;
}
}

if ($TagOK) $Filtered.='<'.$line[$i].'>'; //Tag is allowed : append it !!
else {
$modified = TRUE; //tag is not allowed : filter it !!
if (!($mode&MODE_STRIP)) $Filtered.='&lt;'.$line[$i].'&gt;'; //That is : either strip or replace
if (empty($OffendingAttr)) {
$Warning[]="tag $line[$i] isn't allowed. It will be ".($mode&MODE_STRIP?'removed':'replaced');
}
else {
$Warning[]="tag $line[$i] isn't allowed with attribute $OffendingAttr. It will be ".
($mode&MODE_STRIP?'removed':'replaced'); }
//$Warning[$line[$i]]=(!empty($OffendingAttr)?$OffendingAttr:''); //Tag have been modified : warning
}
} //end if(i%2)
//This is non-tag text.. Just append it
else $Filtered .= $line[$i]; //($InPre?$line[$i]:nl2br($line[$i]));
} //end FOR loop
$result = $Filtered;

if (isset($list))
{
reset($list);
while (list($tag,$val)=each($list))
{
while ($val>0) {$MissingTags.="</$tag>"; $Warning[]='missing closing &lt;/'.$tag.'&gt; tag';$val--;}
}
$modified=TRUE; //we added some closing tags, so something was modified
}

if ($modified) return RC_MODIFIED; else return RC_OK;

}
bron - code auteur 07/2000 by Laurent. Inclusief distributie voorwaarde:
Distribution Policy:
This include file is originally written 07/2000 by Laurent.
It was originally written as a contribution to Fravia's searchlores
phplab (http://www.2113.ch/phplab)
He can be reached at laurent30AThotmail.com or phplabAT2113.ch
Please send constructive critics, ideas or ameliorations, thanks.
This include file is freely distributable, as long as you keep
this unmodified Distribution Policy text somewhere visible within
the sources.

Ik wilde aantonen hoe men PHP wel degelijk aan de tand kan en moet voelen met de PHP Code Security Scan bijvoorbeeld.
Dit in de lijn van de digitale nalatenscahp mijn online searchlore master van destijds - F.R.A.V.I.A (RIP).

Ook Sucuri heeft een nuttige scanner online gezet. Wie code niet controleert is geen code waard!
05-10-2017, 09:34 door -karma4 - Bijgewerkt: 05-10-2017, 11:43
Door Anoniem: Zie voor wat PHP onveiligheid naar de volgende code
Dit in reactie op sommige posters hier....

code block without indentation

Een beetje vals spel want hoewel je er netjes code-blocks omheen hebt gezet is de indentatie weggevallen. Zonder indentatie ziet alle code er beroerd uit (en sommige code - Python - doet het niet eens meer). Hoewel, in deze code staat er commentaar bij een aantal sluitende accolades van statements (dat is nooit een goed teken want dan zijn de enclosed blocks blijkbaar zo lang dat je zonder dat commentaar het begin niet meer ziet). En er worden globale variabelen gerefereerd. En je moet nooit HTML met reguliere expressies proberen te parsen (gebruik beter een library).
05-10-2017, 15:40 door Anoniem
PHP is o.h.a. goed gedocumenteerd.

Het verschil in veiligheid is ook te wijten aan de vaardigheid van de codeur.

Een goed technisch onderlegd PHP developer is vaardiger als de website knutselaar en de gemiddelde web admin.

Mij stoort vooral de generaliserende bashing a la "PHP is niks, joh", vaak nagepapagaaid van anderen.

De identatie stond niet bij het voorbeeld dat ik door een online php security scanner heb gehaald.

luntrus.
06-10-2017, 17:48 door Anoniem
Hier zien we een hele grote CDN die WordPress gebruikt: https://www.highwinds.com/

Zie: https://urlscan.io/result/022a0765-b8e7-4140-be63-1a15a2630103#summary

Met 19 actieve trackers: kijk naar type: https://tools.digitalmethods.net/beta/trackerTracker/?jobid=59d7a2a9dfac2&json=result&view=renderHtmlTable

Op de Word Press content -> http://www.domxssscanner.com/scan?url=https%3A%2F%2Fwww.highwinds.com

Af te serveren jQuery bibliotheek: http://retire.insecurity.today/#!/scan/6d53a6c22053b21f2464c872dc4ab823482e65737dfdf7680758330b96956429

Extern gelinkte hosts: Externally Linked Host Hosting Provider Country

www.stackpath.com Track Data Corp United States

www.facebook.com Facebook United States

www.linkedin.com LinkedIn Corporation United States

google.com Google United States

striketracker.highwinds.com Highwinds Network Group United States

blog.stackpath.com Akamai International, BV United States

cta-redirect.hubspot.com Akamai International, BV United States

support.highwinds.com Amazon.com United States

twitter.com United States

Gebruikte technieken: WordPress (CMS)
Twitter Bootstrap (Web Frameworks)
PHP (Programming Languages)
Google Analytics (Analytics)
Google Font API (Font Scripts)
Optimizely (Analytics)
Yoast SEO (Marketing Automation)

Dus dat Word Press alleen door kleinere sites en blogger wordt gebruikt, is ook alweer mythe.
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.