Preventing SQL Injection Attacks Using AMNESIA
William G.J. Halfond and Alessandro Orso Georgia Institute of Technology
This work was partially supported by DHS contract FA8750-05-2-0214 and NSF awards CCR-0205422 and CCR-0209322 to Georgia Tech.
Preventing SQL Injection Attacks Using AMNESIA William G.J. Halfond - - PowerPoint PPT Presentation
Preventing SQL Injection Attacks Using AMNESIA William G.J. Halfond and Alessandro Orso Georgia Institute of Technology This work was partially supported by DHS contract FA8750-05-2-0214 and NSF awards CCR-0205422 and CCR-0209322 to Georgia
This work was partially supported by DHS contract FA8750-05-2-0214 and NSF awards CCR-0205422 and CCR-0209322 to Georgia Tech.
William Halfond – ICSE Formal Demo – May 25th, 2006
William Halfond – ICSE Formal Demo – May 25th, 2006
William Halfond – ICSE Formal Demo – May 25th, 2006
String queryString = "SELECT info FROM userTable WHERE "; if ((! login.equals("")) && (! pin.equals(""))) { queryString += "login='" + login + "' AND pin=" + pin ; } else { queryString+="login='guest'"; } ResultSet tempSet = stmt.execute(queryString);
William Halfond – ICSE Formal Demo – May 25th, 2006
String queryString = "SELECT info FROM userTable WHERE "; if ((! login.equals("")) && (! pin.equals(""))) { queryString += "login='" + login + "' AND pin=" + pin ; } else { queryString+="login='guest'"; } ResultSet tempSet = stmt.execute(queryString);
William Halfond – ICSE Formal Demo – May 25th, 2006
String queryString = "SELECT info FROM userTable WHERE "; if ((! login.equals("")) && (! pin.equals(""))) { queryString += "login='" + login + "' AND pin=" + pin ; } else { queryString+="login='guest'"; } ResultSet tempSet = stmt.execute(queryString);
William Halfond – ICSE Formal Demo – May 25th, 2006
[issse06]
William Halfond – ICSE Formal Demo – May 25th, 2006
[ase05]
William Halfond – ICSE Formal Demo – May 25th, 2006
William Halfond – ICSE Formal Demo – May 25th, 2006
String queryString = "SELECT info FROM userTable WHERE "; if ((! login.equals("")) && (! pin.equals(""))) { queryString += "login='" + login + "' AND pin=“ + pin; } else { queryString+="login='guest'"; } ResultSet tempSet = stmt.execute(queryString);
Hotspot
William Halfond – ICSE Formal Demo – May 25th, 2006
SELECT info FROM userTable WHERE login = ‘ guest ‘ login = ‘ ‘ β AND pin = β
William Halfond – ICSE Formal Demo – May 25th, 2006
String queryString = "SELECT info FROM userTable WHERE "; if ((! login.equals("")) && (! pin.equals(""))) { queryString += "login='" + login + "' AND pin=" + pin ; } else { queryString+="login='guest'"; } if (monitor.accepts (hotspotID, queryString) { ResultSet tempSet = stmt.execute(queryString);
} Hotspot Call to Monitor
William Halfond – ICSE Formal Demo – May 25th, 2006
SELECT info FROM userTable WHERE login = ‘ guest ‘ login = ‘ ‘ β AND pin = β SELECT info FROM userTable WHERE login = ‘ ‘ doe AND pin = 123
William Halfond – ICSE Formal Demo – May 25th, 2006
SELECT info FROM userTable WHERE login = ‘ guest ‘ login = ‘ ‘ β AND pin = β
SELECT info FROM userTable WHERE login = ‘ ‘ AND pin =
user
William Halfond – ICSE Formal Demo – May 25th, 2006
William Halfond – ICSE Formal Demo – May 25th, 2006
William Halfond – ICSE Formal Demo – May 25th, 2006
William Halfond – ICSE Formal Demo – May 25th, 2006
117 (1,187) 91 (799) 77 (550) 159 (5,269) 107 (952) 40 (167) 289 (772)
Average Automata size
67 16,453 Portal 34 10,949 Classifieds 31 7,242 Events 71 16,959 Bookstore 23 5,658 Employee Directory 40 4,543 Office Talk 5 5,421 Checkers
Hotspots LOC Subject
William Halfond – ICSE Formal Demo – May 25th, 2006
140 (100%) 140 880 Portal 200 (100%) 200 823 Classifieds 260 (100%) 260 875 Events 182 (100%) 182 1028 Bookstore 280 (100%) 280 413 Employee Directory 160 (100%) 160 598 Office Talk 248 (100%) 248 1195 Checkers
William Halfond – ICSE Formal Demo – May 25th, 2006
William Halfond – ICSE Formal Demo – May 25th, 2006