XssAttributeConverter.java
package sk.iway.iwcm.system.jpa;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import sk.iway.iwcm.DB;
/**
* Konverter ktory automaticky escapne HTML kod ak sa v hodnote nachadzaju znaky < alebo >
* Pre povolenie HTML znakov je potrebne pouzit anotaciu:
* @javax.persistence.Convert(converter = AllowHtmlAttributeConverter.class)
* V pripade potreby vypnutia je mozne do konf. premennej xssHtmlAllowedFields pridat hodnotu jpaentity
*
* POZOR: ak vam to tu pada na tom, ze nevie skonvertovat BigDecimal na String a podobne
* (cize aplikuje to akoby na nieco ine ako String) tak si skontrolujte typ pola v DB a typ pola
* v Java triede, urcite to mate nespravne (v triede mate String namiesto Number, alebo v DB mate varchar namiesto number)
*/
@Converter(autoApply = true)
public class XssAttributeConverter implements AttributeConverter<String, String>
{
@Override
public String convertToDatabaseColumn(String data)
{
return data;
}
@Override
public String convertToEntityAttribute(String databaseValue)
{
//V pripade potreby vypnutia je mozne do konf. premennej xssHtmlAllowedFields pridat hodnotu jpaentity
if (databaseValue!=null && DB.isHtmlAllowed("jpaentity")==false)
{
return DB.filterHtml(databaseValue);
}
return databaseValue;
}
}