下面的代码是否容易出现sql注入。据我所知,CommandBuilder在生成SELECT / UPDATE / INSERT命令时总是使用参数化查询。
SELECT hits.product.v2ProductName AS other_purchased_products, COUNT(hits.product.v2ProductName) AS quantity
FROM [XXXXXXX.ga_sessions_XXXXXXXX]
WHERE fullVisitorId IN (
SELECT fullVisitorId
FROM [XXXXXXX.ga_sessions_XXXXXXXX]
WHERE hits.product.v2ProductName CONTAINS 'blue footballs'
AND totals.transactions>=1
GROUP BY fullVisitorId)
AND hits.product.v2ProductName IS NOT NULL
AND hits.product.v2ProductName != 'blue footballs'
GROUP BY other_purchased_products
ORDER BY quantity DESC;
答案 0 :(得分:0)
CommandBuilders在生成insert,update和delete语句时使用参数化查询。所以不,你不会受到来自他们的SQL注入攻击。在参数化查询中,将解析带有参数标记的SQL语句,然后单独推送参数。 SQL查询解析器不会解析参数内的值,因此代码路径中没有任何地方可以进行注入。
另一个需要考虑的选择是使用像Entity Framework这样的ORM(对象关系映射器)或者像Dapper那样更轻松的东西。