我正在执行 SQL 查询 (system.data.SQLite),如下所示:
var color = "red";
var command = new SQLiteCommand("SELECT something FROM tabletop WHERE color = '" + color + "'", Connection);
var reader = command.ExecuteReader();
颜色变量是用户提供的文本。
如何转义此文本以防止 SQL 注入?
或者这是不好的做法,我应该以某种完全不同的“受保护”方式执行查询?
您应该使用参数化查询:
var command = new SQLiteCommand("SELECT something FROM tabletop WHERE color = @Color", Connection);
command.Parameters.AddWithValue("Color", color);
您还可以传递一个数组SQLiteParameter
进入command.Parameters
像这样的集合:
SQLiteParameter[] parameters = { new SQLiteParameter("Color", color), new SQLiteParameter("Size", size) }; // etc.
command.Parameters.AddRange(parameters);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)