我发现我们的软件容易受到 sql-injection 的攻击。
我们的软件是用 C# 和一种 Gizmox 框架编写的。我们的框架无法处理参数化查询并使用字符串连接来构建 sql 查询。
我知道这听起来很糟糕,但从长远来看,我们会重构它。在短期内,我们需要一个快速的(也许是肮脏的)修补程序。
我们的想法是使用正则表达式针对以下黑名单验证用户输入:
“ --
”、“ ;--
”、“ ;
”、“ /*
”、“ */
”、“ @@
”、“ @
”、“ char
”、“ nchar
”、“ varchar
”、“ nvarchar
”、“ alter
”、“ begin
”、“ cast
”、“ create
”、“ cursor
”、“ declare
” , " delete
" , " drop
" , " end
" , " exec
" , " execute
" , " fetch
" , " insert
" , " kill
" , " open
" , " select
" , " sys
" , " sysobjects
" , " syscolumns
" , " table
" , " update
"
由于黑名单是您可以拥有的最弱的 sql 保护,我想寻求更好的解决方案。