Archive

Archive for October, 2007

JBoss SEAM i EJB-QL injection

October 11th, 2007 2 comments
A jednak. Nawet tak zaawansowany framework jak JBoss SEAM może być podatny na ataki EJB-QL injection. EJB-QL injection jest podobny do SQL injection, z tą różnicą że nie atakujemy kodu SQL a kod EJB-QL. Mam najnowszą wersję: jboss-seam-2.0.0.CR2. Błąd jest w pomyślne na klasę: org.jboss.seam.framework.Query w metodzie getRenderedEjbql(). Czytamy tam:
if ( getOrder()!=null ) builder.append(" order by ").append( getOrder() );
return builder.toString();
Parametr order pochodzi z żądania HTTP. To co zły człowiek możemy zrobić zależy od implementacji JPA i serwera bazy danych. Mi nie przychodzi akurat nic złego do głowy. Uważam jednak, że ten kod biblioteki SEAM trzeba jeszcze raz przemyśleć i koniecznie przepisać. Zapewne pogadamy o tym na Warszawskim JUGu. Aktualizacja po przerwie na kanapkę. W nagrodę za znalezienie błędu w SEAMie postanowiłem zjeść kanapkę. Dawka energii sprawiła, że znalazłem szybkie rozwiązanie. W klasie dziedziczącej – implementującej naszą listę obiektów musimy ustalić listę dozwolonych sortowań, na przykład tak:
private static final String[] ORDERS = {name asc","name desc","id asc","id desc"};
@Override
public void setOrder(String order){
  if (Arrays.asList(ORDERS).contains(order)) {
    super.setOrder(order);
  }
}
W ten sposób zabezpieczymy się przed ryzykiem na przykład tego, że zły człowiek wciśnie nam sortowanie po procedurze SQL odpowiedzialnej za kasowanie userów.
Categories: Java, JPA Tags:

Mapy w Internecie

October 4th, 2007 1 comment
Internetowe mapy szybko się rozwijają. W Google możemy pooglądać jak wyglądają korki w mieście. A w Microsoft możemy oglądać budynki tak dokładnie jak nigdy wcześniej. Niestety, jeszcze nie w Polsce. A kto w Polsce zrobi pierwszy korki na mapach?
Categories: Recenzje Tags: