You can solve many protential website security issue by only granting execute permission to store procedures required by the web application. Here are some scripts that help you achieve that.
/* CREATE A NEW ROLE */
CREATE ROLE db_executor
/* GRANT EXECUTE TO THE ROLE */
GRANT EXECUTE TO db_executor
GRANT SELECT TO db_executor
GRANT INSERT TO db_executor
GRANT UPDATE TO db_executor
GRANT DELETE TO db_executor
/* CREATE A NEW ROLE */
CREATE ROLE db_executor
/* GRANT EXECUTE TO THE ROLE */
GRANT EXECUTE TO db_executor
GRANT SELECT TO db_executor
GRANT INSERT TO db_executor
GRANT UPDATE TO db_executor
GRANT DELETE TO db_executor
/* Here is a way to grand execute to all store procedures. */
/* *************************** */
CREATE PROC grants as
declare curse cursor for select name from sysobjects where type='P'
OPEN CURSE
declare @proc varchar(100)
declare @stmt nvarchar(200)
fetch next from curse into @proc
while @@fetch_status=0
begin
set @stmt='grant execute on '+@proc+' to bnbuser'
exec SP_EXECUTESQL @STMT
print @stmt
fetch next from curse into @proc
end
close curse
deallocate curse
GO