我认为我的存储过程很脆弱

时间:2013-02-17 09:03:21

标签: sql sql-server security stored-procedures sql-injection

我正在SQL Server上运行一个ASP.NET MVC应用程序,它似乎已被黑客攻击或SQL注入。数据库每天都在创建大量的新假账户,我还没有完全确定问题,但我担心我之前认为存储过程代码不受SQL注入的影响。

以下是我的存储过程代码的三个简短版本,请帮助我纠正它,如果它易受攻击,谢谢。

创建新用户:

CREATE PROCEDURE [dbo].[NEWUSER]
@Name varchar(50),
@Email varchar(70),
@Language varchar(20)
AS

SET NOCOUNT ON;

INSERT INTO dbo.User (name, email, language)
VALUES (@Name, @Email, @Language);

SET NOCOUNT OFF;

INSERT INTO dbo.Names (name)
VALUES (@Name);

SELECT @@IDENTITY

选择用户:

CREATE PROCEDURE [dbo].[GETUSER] 
@Name varchar(33)
AS

SET NOCOUNT ON;

SELECT name, email, language FROM dbo.User WHERE name = @Name;

更新用户:

CREATE PROCEDURE [dbo].[EDITUSER] 
@Name varchar(33),
@Email varchar(70)
AS

SET NOCOUNT ON;

UPDATE dbo.User SET email = @Email WHERE name = @Name;

请帮我解决这个问题,我真的很感激。

我的ASP.NET代码:http://www.cindro.com/all/database.txt

1 个答案:

答案 0 :(得分:2)

您的存储过程看起来不错。我试着在某个地方查看你的应用程序代码。

  1. 您的表格中是否有验证码?
  2. 您是否执行任何服务器端验证?
  3. 您检查请求来自的IP地址吗?
  4. 您是否检查请求是来自真实浏览器还是某些脚本(Request.Browser.Cookies Request.Browser.Crawler)?