我有以下查詢字符串EntitySQL和SQL注入
"SELECT VALUE entity FROM Entities AS entity WHERE entity.Client_id
= 0 && entity.Name LIKE @searchvalue ORDER BY @sorting SKIP @skip LIMIT @limit"
具有以下PARAM更換
query.Parameters.Add(new ObjectParameter("skip", start));
query.Parameters.Add(new ObjectParameter("limit", limit));
query.Parameters.Add(new ObjectParameter("searchvalue", searchValue + "%"));
query.Parameters.Add(new ObjectParameter("sorting", sortField + " " + sortDirection.ToUpper()));
但我一直在異常結束:
的關鍵表達式'ORDER BY'必須至少有一個對即時輸入範圍的引用 。 ORDER BY附近項目
我猜這是因爲query.Parameters.Add(...)
所有引號?我也讀this,但爲什麼好處那麼我需要query.Parameters.Add(...)
如果什麼都不會發生?好的,攻擊者可能不會開始一個新的查詢,但我猜他可以操縱當前?
不熟悉entity-sql,但我的猜測是肯定的,它認爲,例如'fieldname asc'是你想要的字段的名稱。你可以用'... ORDER BY @sortfield @sortdir ...'和兩個參數來嘗試嗎? – 2012-01-31 07:59:34