SELECT verlog.bearerid, detail.snum
FROM verlog
INNER JOIN detail
ON verlog.txnid = detail.txnid
WHERE verlog.bearerid ='"+ TextBox1.Text +"'
这是获取文本框值并在where子句中使用它的正确方法吗?
答案 0 :(得分:1)
我不会像你提到的那样编写脚本;这将为注射铺平道路。如果不使用任何ORM技术,例如Entity框架,它反过来也会调用自己的安全问题,请始终坚持参数化的ado.net查询。看this link
答案 1 :(得分:1)
通过以这种方式构造语句,您可以开启SQL injection攻击,用户可以在其中针对您的数据库运行其他sql。
您可以使用参数化的sql来防止这种情况。然后在执行时传递查询和参数。
SELECT verlog.bearerid, detail.snum
FROM verlog
INNER JOIN detail
ON verlog.txnid = detail.txnid
WHERE verlog.bearerid = @bearerid
更多细节可在此处阅读:http://www.csharp-station.com/Tutorial/AdoDotNet/lesson06
或者你可以使用ORM来为你处理这个问题。