WTF? STFU!

Hűha, a tegnapi leveles történet után a mai történet egy kicsit élesebb. Mondjuk felteszem a kérdést, amire minden informatikában valamennyire jártas ember, akin nem hajtottak végre teljes lobotómiát válaszolni tud: mi történik, ha a felhasználó PHP kódot tud futtatni a szerveren? De ne szaladjunk előre, nézzük a kódot:

[code]
function saveform()
{
var firstName = escapeSql(mainForm.elements.txtFirstName.value);
var lastName = escapeSql(mainForm.elements.txtLastName.value);
/* ... */
var offerCode = escapeSql(mainForm.elements.txtOfferCode.value);

var code =
' $cn = mssql_connect($DB_SERVER, $DB_USERNAME, $DB_PASSWORD) ' +
' or die("ERROR: Cannot Connect to $DB_SERVER"); ' +
' $db = mssql_select_db($DB_NAME, $cn); ' +
' ' +
' if (mssql_query("SELECT 1 FROM APPS WHERE SSN=\''+ssn+'\'", $cn)) ' +
' { $ins = false; } ' +
' else ' +
' { $ins = true; } ' +
' ' +
' if ($ins) { ' +
' $sql = "INSERT INTO APPS (FIRSTNM, LASTNM, ..., OFFERCD) VALUES ("; ' +
' $sql+= "\''+firstName+'\',"; ' +
' $sql+= "\''+lastName+'\',"; ' +
' $sql+= "\''+offerCode+'\')"; ' +
' ' +
' /* ... */ ' +
' ' +
' mssql_query($sql, $cn); ' +
' mssql_close($cn); ';

execPhp(code);
}
[/code]

(teljes történet: itt)

Aki nem vágja a JavaScriptet, annak elmondom, hogy a cucc AJAX-os, egy XMLHttpRequest objektum segítségével küldi fel a JS az adatokat a szerverre, ahol az a PHP eval() függvényével futtatja ezt.

Ez tényleg egy masszív WTF. Nagyon-nagyon remélem, hogy ez csak egy szakállas kacsa. Vélemények? Mindenesetre pusztán játékból kiváló ötlet. :)

Hozzászólások

Bocs de... nyűgös vagyok, álmos vagyok, gyakorlatilag egyik alkatrészhez sem értek ilyen mélységben. (egy helloworld.php-t még össze tudok dobni, de kb. ennyi)
Nem akarod összefoglalni pár szóban, hogy mi a bánat akar ez lenni?

szerk: lobotómiára ugyan nem emléxem ( ;-) ) de a php-ről csak annyit tudok, hogy volt néhány igen-igen bugos verziója ami miatt ajánlatos volt letiltani többek közt a userek php futtatási lehetőségét.
---------------------------------------------------
Fel! Támadunk!

No jó, akkor jön az összefoglalás: a csávó gyakorlatilag egy PHP kódot küldött fel JavaScript segítségével a szervernek. Itt nem a PHP bugossága a kérdés, hanem az, hogy kódot enged fel a szerverére a klienstől, az gyakorlatilag direkt implementál egy bugot, amit minden egységsugarú PHP-huszár Pistike ki tud használni.

A lobotómiát meg arra értettem, hogy aki ilyet kitesz netre, élesben az nem százas. Nem azokra gondoltam, akik nem értik a poént. :)

"No boom today. Boom tomorrow. There's always a boom tomorrow. What? Look, somebody's got to have some damn perspective around here. Boom, sooner or later. BOOM!" -- Lt. Cmd. Ivanova