You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If I change scheduled_service_smart_listing[sort][customer_id]=asc for scheduled_service_smart_listing[sort][customer_id; delete from schedule_services where id = 1; --]=asc
Give me this error
PG::SyntaxError: ERROR: cannot insert multiple commands into a prepared statement
: SELECT "scheduled_services".* FROM "scheduled_services" ORDER BY customer_id; delete from schedule_services where id = 1; -- asc LIMIT $1 OFFSET $2
See that the DELETE instruction was delivered to database. Not executed, but, delivered and it's a problem. Has a way to avoid that?
The text was updated successfully, but these errors were encountered:
I faced with the same problem and found a decision that works for me.
So, when you use sort_attributes option then library will use only that attributes and skip bad one. I don't know why this is not said in the official documentation.
Example:
sort_aliases=[[:id,"users.id"],[:email,"users.email"],[:name,"users.metadata->>'name'"]# you can sort JSONB too]@users=smart_listing_create(:users,User,sort_attributes: sort_aliases)# view part
<th><%= smart_listing.sortable'ID',:id %></th><th><%= smart_listing.sortable 'Name', :name %></th>
So, when I change params for "sort"=>{"id;TRUNCATE users;--"=>"asc"}} it just ignored and nothing will happen.
Please, help me.
I'm searching a way to prevent SQL Injection using Smart Listing.
For instance:
In my view:
Params generated by Smart Listing:
If I change
scheduled_service_smart_listing[sort][customer_id]=asc
forscheduled_service_smart_listing[sort][customer_id; delete from schedule_services where id = 1; --]=asc
Give me this error
See that the DELETE instruction was delivered to database. Not executed, but, delivered and it's a problem. Has a way to avoid that?
The text was updated successfully, but these errors were encountered: