如何在C#ASP.NET中保护SQL
我有以下代码:如何在C#ASP.NET中保护SQL,c#,asp.net,sql,webforms,C#,Asp.net,Sql,Webforms,我有以下代码: [WebMethod] public static string addNewNote(string id, string txt) { Guid parentId = new Guid(id); DbProviderFactory dbf = DbProviderFactories.GetFactory(); using (IDbConnection con = dbf.CreateConnection()
[WebMethod]
public static string addNewNote(string id, string txt)
{
Guid parentId = new Guid(id);
DbProviderFactory dbf = DbProviderFactories.GetFactory();
using (IDbConnection con = dbf.CreateConnection())
{
con.Open();
using (IDbTransaction trn = con.BeginTransaction())
{
Guid noteId = Guid.Empty;
SqlProcs.spNOTES_WebForms
(ref noteId,
parentId,
"Files",
"Client Note",
txt,
true
);
}
}
return "";
}
在PHP等其他语言中,存在诸如strip_tags
或addslashes
或mysqlrealeescapestring
之类的函数,这些函数将在将基于客户端的变量插入数据库之前对其进行清理或清除
C#ASP.NET中是否存在任何此类函数,或者是否需要任何此类函数。正如您所看到的,我已经在使用存储过程。如果您使用参数化查询。Net将为您处理变量 如果使用参数化查询,Net将为您处理变量 您是否考虑过使用?我不知道,但在本例中,我使用的是存储过程,所以我不确定是否可以使用SQL。我想我首先可以清理C#中的数据。您是否考虑过使用?我不知道,但在这种情况下,我使用的是存储过程,因此我不确定是否可以使用SQL。我在想,首先我可以清理C#中的数据代码>(例如)。你是说这是安全的,可以按原样使用吗?在看了之后,我可以问一下,它说这在哪里净化了传入的数据?谢谢。请阅读这里的
使用类型安全SQL参数
部分:输入被视为文本值而不是可执行代码
好吧,我想我可以放心让它保持原样。谢谢我的存储过程生成了以下代码IDbDataParameter parID=Sql.AddParameter(cmd,“@ID”,gID)代码>(例如)。你是说这是安全的,可以按原样使用吗?在看了之后,我可以问一下,它说这在哪里净化了传入的数据?谢谢。请阅读这里的使用类型安全SQL参数
部分:输入被视为文本值而不是可执行代码
好吧,我想我可以放心让它保持原样。谢谢