내 Java 프로그램에서 Hyibernate 기술을 사용하여 항목이라는 MySQL 데이터베이스 테이블에 액세스했습니다.이 테이블에는 "itemname itemprice itemid"라는 열이 있습니다 & 내 Java 프로그램에 데이터를 가져 오기위한 HQL 문이 있습니다. 또한 항목 테이블에서 채워지는 콤보 상자가 있습니다. 콤보 상자에서 itemname을 선택하면 itemid & itemplice, &이라는 편집 불가능한 두 개의 jtext 필드가 자동으로 채워집니다. 프로그램의 다른 부분에는 해당 jtextfields에서 문자열 값을 가져 오는 코드가 있습니다 & POJO 클래스를 사용하여 orders라는 다른 데이터베이스 테이블에 해당 값을 씁니다. .최대 절전 및 보안 위협
나는 이런 종류의 프로그램이 SQL injections에 의해 공격받을 수 있다는 것을 알고 싶습니까? 우리가 최대 절전 모드를 사용한다면 그것은 SQL injection 공격으로부터 안전합니까? ... 내 프로그램에 보안 위협이 간략하게 설명되어있는 경우 어떻게 피할 수 있습니까?
여기에 몇 가지 코드를 게시합니다. 이 문은 콤보 상자
String SQL_QUERY = "Select items.iname,items.iid,items.iprice from Item items";
을 채우기 위해이 문장은 jtextfields을 채 웁니다. "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 인젝션에 취약한 지 알 수 있습니다. –
일부 코드를 게시했습니다 – Grant