Leon,

I'm glad you brought this up. It has always been a question in the back of my 
mind.

-Adrian


Leon Torres wrote:

Ok I just tried to do it and it doesn't work because ofbiz validates the field names, which is great. Here's what I tried:

opportunitiesOrderBy=opportunityStageId;delete%20from%20party%20where%201=1

Results in:

Target exception: org.ofbiz.entity.GenericModelException: Field with name opportunityStageId;delete from party where 1=1 not found in the PartyRelationshipAndSalesOpportunity Entity

So there is no need to worry about using request parameters directly in the entity engine API.

- Leon



Leon Torres wrote:

How robust is the entity engine API against sql injection attacks? Consider the following scenario:

// get the field to order by from the request parameters
orderByField = parameters.get("orderByField");
if (orderByField == null || orderByField.trim().length() == 0) {
  orderByFeild = "partyId"; // default
}

...

parties = delegator.findByAnd("Party", conditions, UtilMisc.toList(orderByField)); // order by this field


What happens if the user tries to inject SQL into the orderByField parameter? Is there a risk? Should I be protecting myself by validating the orderByField parameter or does ofbiz/JDBC already do this?

- Leon


Reply via email to