SQL Server注入
Web开发和接管某些代码的新手。他们有一个功能,以防止SQL注入,SQL Server数据库SQL Server注入
function safe(val, maxsize)
dim i,
terms = array(
"cast",
"select",
"varchar",
"declare",
"drop",
";",
"--",
"insert",
"delete",
"xp_"
)
val = left(val,maxsize)
val = trim(val)
for i = 0 to ubound(terms)
val = replace(val, terms(i), "e_" & val & "_e", vbTextCompare)
next
val = replace(val, "'", "''")
makesafe = val
end function
犹豫要触摸这个,但这是否缺少什么?似乎他们偶尔砍死
下面的文章应该有所帮助:
http://tugberkugurlu.com/archive/sql-injection-vs-lethal-injection-protection-against-sql-injection
这不是好主意,这条路走下来string.Replace
绝对+1 - 唯一有用的解决方案是**参数化查询**,因为本文很好地显示 –
@marc_s完全同意。此外,EntityFramework或Linq to SQL也会有所帮助。 – tugberk
这看起来像传统ASP中的VBScript,所以它可能会涉及更多的移动到EF或Linq2SQL。 –
我不会依赖这样的函数来防止sql注入攻击。参数化查询是必须的。几乎可以肯定一些注射文本,你会错过使用你列出的方法的方法。
如果他们被黑客攻击,他们应该正确处理注入 - 使用带有正确数据类型的参数化语句,验证输入并且不要盲目地基于用户(甚至是应用程序)提交的字符串生成SQL语句。这个“安全”功能对我来说就像是一张虚假的安全毯。 –
使用**参数化查询**而不是将您的SQL语句连接在一起是您**唯一可行的方法。忘记“消毒”你的输入 - 你会永远忘记一些东西 - 只是使用参数化查询并用它来完成...... –
'exec'呢? – tugberk