在我的java程序中,我使用Hybernate技術訪問MySQL數據庫表中名爲items。該表具有名爲「itemname itemprice itemid」的列&我的java程序具有HQL語句來獲取數據。它還有一個組合框,從項目表中填充。一旦我們從組合框中選擇一個ITEMNAME它會自動補叫了兩個不可編輯jtext領域爲itemid & ITEMPRICE,&程序的其他部分有代碼,以這些JTextField的&得到的字符串值寫入使用POJO類在另一個數據庫中的表名爲訂單的價值。休眠與安全威脅
我想知道,這種程序可以通過SQL注入攻擊???,如果我們使用Hibernate它是安全的SQL注入攻擊??? .... 如果我的程序有安全威脅簡要解釋我怎麼能避免這些...
我在這裏發佈了一些代碼。 這種說法,以填補組合框
String SQL_QUERY = "Select items.iname,items.iid,items.iprice from Item items";
此語句填充JTextField的。 「selecteditem」變量是組合框的選定索引。
String SQL_QUERY ="Select items.iname,items.iid,items.iprice from Item items where items.iid = '"+selecteditem+"'";
這種方法在訂單表中的數據寫入
//To send data to the orders table
private void fillordertable(){
String itemname = (String) jcbItemCode.getSelectedItem();
String itempric = jtfItemPrice.getText();
String tmp = jtfQuantity.getText();
int itemqty = Integer.parseInt(tmp);
String temp = jtfUnitPrice.getText();
double unitpric = Double.parseDouble(temp);
Session session = null;
//This variables for validating purposes
String tempcname = jtfName.getText();
String tempcemail = jtfEmail.getText();
if(tempcname.equals("") || tempcemail.equals("")){
jtaDisplay.setText("Check * fields");
}
else{
try{
SessionFactory sessionFactory = new org.hibernate.cfg.Configuration().configure().buildSessionFactory();
session =sessionFactory.openSession();
session.beginTransaction();
Order order = new Order();
order.setItcode(itemcode);
order.setItdiscription(itemdis);
order.setItqty(itemqty);
order.setItemprice(unitpric);
order.setTotprice(unitpric * itemqty);
order.setOstatus("Placed");
session.save(order);
session.getTransaction().commit();
}
catch(Exception exc){
jtaDisplay.setText(exc.getMessage());
}
finally{
session.flush();
session.close();
}
jtaDisplay.setText("Order & customer tables updated successfully !!!");
}
}
這是很難理解我的整個代碼,如果我在這裏發佈。所以我發佈了一些我認爲有助於回答我的問題的代碼。如果這還不夠,請評論。
謝謝!
向我們展示一些代碼,也許我們可以顯示哪些部分容易受到sql注入的影響。 – 2012-03-07 18:31:43
我已經發布了一些代碼 – Grant 2012-03-07 18:48:50