SQL注入攻击例子及Statement和PreparedStatement的比较

SQL injection is a technique that exploits a security vulnerability occurring in the database layer of an application . The vulnerability is present when user input is either incorrectly filtered for string literal escape characters embedded in SQL statements or user input is not strongly typed and thereby unexpectedly executed. It is in fact an instance of a more general class of vulnerabilities that can occur whenever one programming or scripting language is embedded inside another.

 

Google翻译如下(20090331追加):

SQL注入是一种技术,利用一个安全漏洞发生在数据库层的应用程序。该漏洞存在时,用户输入的是不是正确过滤字符串转义字符中嵌入SQL语句或用户输入不 强类型,从而出人意料地执行。事实上,它是一个实例一个更一般类别的安全漏洞,可能会发生时,一个编程或脚本语言是内嵌另一个。

 

 

SQL注入 例子及 Statement PreparedStatement 的比

 

SQL注入 是利用是指利用 设计 上的漏洞,在目 器上运行 Sql 句以及 行其他方式的
动态 生成 Sql 没有 户输 入的数据 验证 Sql注入 得逞的主要原因。
JDBC而言, SQL注入 Statement有效, PreparedStatement 是无效的, 是因 PreparedStatement 不允 在不同的插入 时间 变查询 逻辑结 构。

验证 是否存在的 SQL
select count(*) from usertable where name=' ' and pswd=' '
如果在 名字段 ' or '1'='1' or '1'='1
或是在 字段 1' or '1'='1
绕过验证 ,但 这种 手段只 Statement有效, PreparedStatement 无效。


PreparedStatement Statement有以下 点:

1.注入

2.多次运行速度快

3.防止 数据 库缓 冲区溢出

4. 的可 性可 维护 性好

 

四点使得 PreparedStatement 为访问 数据 象的首 ,缺点是灵活性不 好,有些 是必 使用 Statement



http://www.blogjava.net/Files/sitinspring/SQLInjection20081010002141.rar  

posted on 2008-10-10 00:22 sitinspring 阅读 (1) 评论 (0)  编辑  收藏 所属分 : DB&SQL

 

你可能感兴趣的:(sql,编程,jdbc,脚本,Google)