У меня есть задание добавить недостаток SQL-инъекции в веб-приложение, и я надеюсь, что кто-нибудь может подсказать мне правильное направление, которое не требует переписывания всей программы.
Вот код, где выполняется большая часть работы:
package todolist;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;
public class DAOImp implements ItemListDAO {
@Override
public void addItem(String itemStr) {
ListItem item = new ListItem(itemStr);
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;
Integer itemID = null;
try {
tx = session.beginTransaction();
itemID = ((Integer) session.save(item));
tx.commit();
} catch (HibernateException e) {
if (tx != null)
tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
}
@Override
public void delItem(int itemNbr) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;
ListItem item2 = session.get(ListItem.class, itemNbr);
try {
tx = session.beginTransaction();
session.delete(item2);
tx.commit();
} catch (HibernateException e) {
if (tx != null)
tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
}
@Override
public List<ListItem> getList() {
List<ListItem> list = new ArrayList<>();
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
Query<ListItem> queryList = session.createQuery("FROM ListItem");
list = queryList.list();
tx.commit();
} catch (HibernateException e) {
if (tx != null)
tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
return list;
}
}
Поскольку я создаю объект, который затем передается в базу данных, я не уверен, как именно создать дефект внедрения, или было бы проще сделать это в разделах добавления или удаления. Буду признателен за любую помощь и любую дополнительную информацию, которая может вам понадобиться.