参数vs字符串插值

nPc*_*omp 6 c# sql

使用参数而不是使用字符串插值有什么好处?

这是

SELECT * FROM dbo.Posts WHERE Author = @p0", userSuppliedAuthor;

比任何更好

$@SELECT * FROM dbo.Posts WHERE Author = {userSuppliedAuthor}";

Ser*_*kiy 15

字符串插值只是格式化字符串的语法糖.它无法防止SQL注入.您应该使用SQL参数为查询提供值.

考虑 - 如果userSuppliedAuthor等于

'Bob' OR 1 = 1
Run Code Online (Sandbox Code Playgroud)

甚至

'Bob'; DROP TABLE Users;
Run Code Online (Sandbox Code Playgroud)

进一步阅读SQL注入

  • 或者"''鲍勃'; DROP TABLE dbo.Posts;"` (4认同)