When Ajax Gets Abused

April 22nd, 2006  |  Published in JavaScript/AJAX, PHP

When Ajax Gets Abused:

The programmer who wrote this code could have written scary code without Ajax, but this takes the cake:

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

<p>&nbsp; <span style="color: #003366; font-weight: bold;">var</span> code =<br />

  ‘  $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);
}
 

This reminds us to be very strict with what we take in on the server side. Any old PHP? probably not a good thing ;)

Scary!

(Via Ajaxian Blog.)

Leave a Response