我使用一个需要 SQL 字符串的 API。我获取一个用户输入,转义它并将其传递给 API。用户输入非常简单。它要求列值。像这样:
string name = userInput.Value;
然后我构造一个 SQL 查询:
string sql = string.Format("SELECT * FROM SOME_TABLE WHERE Name = '{0}'",
name.replace("'", "''"));
这样是否足够安全? 如果不够安全,是否有一个简单的库函数可以保证列值的安全:
string sql = string.Format("SELECT * FROM SOME_TABLE WHERE Name = '{0}'",
SqlSafeColumnValue(name));
API 使用 SQLServer 作为数据库。