SQL 注入漏洞数量创三年来新高

oschina
 oschina
发布于 2015年01月21日
收藏 15

SQL注入漏洞近年来呈缓慢下降趋势,但是根据 DB Networks 的报告,2014年公开发行的软件中该漏洞数量急速飙升。

DB Networks指出导致SQL注入漏洞激增的原因是近年来软件开发过于注重对开发周期和预算的控制,而忽视了越来越致命的开发安全问题。

SQL注入漏洞增长趋势

DB Networks的分析数据来自NIST(美国国家标准与技术研究所)的国家漏洞数据库,分析显示2014年的SQL注入漏洞数量出现大幅反弹,较2013年增长104%,创下2011年来的新高。

DB Networks的首席执行官Dave Rosenberg指出,当产品开发期限临近,预算吃紧的时候,安全测试成了第一个被忽略的环节。

一方面安全开发被忽视,另一方面安全漏洞造成的损失却不断飙升,近年来数据泄露的平均成本高达600万美元,最近一次SQL注入漏洞导致的安全事件来自内容管理平台Drupal,影响了数以百万计的网站。

稿源:安全牛

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:SQL 注入漏洞数量创三年来新高
加载中

最新评论(51

eechen
eechen

引用来自“小翔”的评论

我现在怕js注入

引用来自“eechen”的评论

HTML Purifier是一个采用PHP编写的HTML过滤器,可以搭配WYSIWYG编辑器使用,过滤掉XSS恶意代码.
http://htmlpurifier.org/download
http://htmlpurifier.org/demo.php
Yii框架用的就是这个过滤库.

OWASP项目(Open Web Application Security Project)对XSS的详细介绍:
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

引用来自“小翔”的评论

过滤到是多,不过我说的是一般项目都没有注意这个。
最简单粗暴的做法就是用htmlspecialchars实例化HTML字符后输出.
小翔
小翔

引用来自“小翔”的评论

我现在怕js注入

引用来自“eechen”的评论

HTML Purifier是一个采用PHP编写的HTML过滤器,可以搭配WYSIWYG编辑器使用,过滤掉XSS恶意代码.
http://htmlpurifier.org/download
http://htmlpurifier.org/demo.php
Yii框架用的就是这个过滤库.

OWASP项目(Open Web Application Security Project)对XSS的详细介绍:
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
过滤到是多,不过我说的是一般项目都没有注意这个。
eechen
eechen

引用来自“小翔”的评论

我现在怕js注入
HTML Purifier是一个采用PHP编写的HTML过滤器,可以搭配WYSIWYG编辑器使用,过滤掉XSS恶意代码.
http://htmlpurifier.org/download
http://htmlpurifier.org/demo.php
Yii框架用的就是这个过滤库.

OWASP项目(Open Web Application Security Project)对XSS的详细介绍:
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
小翔
小翔
我现在怕js注入
七液
七液

引用来自“eechen”的评论

PHP可以执行SQL时用bind_param绑定参数查询以避免SQL注入,用htmlspecialchars安全输出内容,避免XSS攻击.
比如PHP使用SQLite绑定参数使用事务批量插入数据库:
<?php
$table = 'CREATE TABLE logs (
  id INTEGER PRIMARY KEY,
  date VARCHAR(19) NOT NULL,
  content VARCHAR(200) NOT NULL
)';
if (!file_exists('test.db3')) {
  $dbh = new PDO('sqlite:test.db3');
  $dbh->query($table);
} else {
  $dbh = new PDO('sqlite:test.db3');
}
$date = date('Y-m-d H:i:s');
$content = time();
$dbh->beginTransaction();
//PHP往SQLite插入100万条记录只用16秒.
for($i=0;$i<1000000;$i++) {
  $stmt = $dbh->prepare('INSERT INTO logs (date, content) VALUES (:date, :content)');
  $stmt->bindParam(':date', $date, PDO::PARAM_STR, 19);
  $stmt->bindParam(':content', $content, PDO::PARAM_STR, 200);
  $stmt->execute();
}
$dbh->commit();
$dbh = null;

引用来自“七液”的评论

很喜欢秀自己智商下限嘛~XSS,CSRF这些都有针对性封杀,所谓的一次性封杀早就是必过的防御了。一个木马如果连杀软都过不去,本身就是不合格的。这些培训教程里面早就有如何绕过常见过滤的方法了。。。

引用来自“xia-yongsheng”的评论

大神,给个绕过pdo预处理的注入栗子让我开开眼界好不好?

引用来自“七液”的评论

6000 黑市上自己买。安全公司早就有泄漏的了。

引用来自“撒哈拉的小猫”的评论

那你怎么不买个来发发财呢
对我来说没用,能用的东西多着呢,注入只是广为人知的一种方式,其他方式多着呢。
咚往咚来
咚往咚来
只有gpc好不好
咚往咚来
咚往咚来

引用来自“eechen”的评论

@22楼 其实绑定参数的原理就是字符串则用addslashes()进行转义,整数用(int)或(integer)或intval()转换为整型.这些其实程序都可以自己做,不过使用参数化查询,也就省事了.这就是PHP,带你装逼带你飞.
php预处理,不绑定,也可以防止sql
blu10ph
blu10ph

引用来自“eechen”的评论

PHP可以执行SQL时用bind_param绑定参数查询以避免SQL注入,用htmlspecialchars安全输出内容,避免XSS攻击.
比如PHP使用SQLite绑定参数使用事务批量插入数据库:
<?php
$table = 'CREATE TABLE logs (
  id INTEGER PRIMARY KEY,
  date VARCHAR(19) NOT NULL,
  content VARCHAR(200) NOT NULL
)';
if (!file_exists('test.db3')) {
  $dbh = new PDO('sqlite:test.db3');
  $dbh->query($table);
} else {
  $dbh = new PDO('sqlite:test.db3');
}
$date = date('Y-m-d H:i:s');
$content = time();
$dbh->beginTransaction();
//PHP往SQLite插入100万条记录只用16秒.
for($i=0;$i<1000000;$i++) {
  $stmt = $dbh->prepare('INSERT INTO logs (date, content) VALUES (:date, :content)');
  $stmt->bindParam(':date', $date, PDO::PARAM_STR, 19);
  $stmt->bindParam(':content', $content, PDO::PARAM_STR, 200);
  $stmt->execute();
}
$dbh->commit();
$dbh = null;

引用来自“七液”的评论

很喜欢秀自己智商下限嘛~XSS,CSRF这些都有针对性封杀,所谓的一次性封杀早就是必过的防御了。一个木马如果连杀软都过不去,本身就是不合格的。这些培训教程里面早就有如何绕过常见过滤的方法了。。。

引用来自“xia-yongsheng”的评论

大神,给个绕过pdo预处理的注入栗子让我开开眼界好不好?

引用来自“七液”的评论

6000 黑市上自己买。安全公司早就有泄漏的了。

引用来自“撒哈拉的小猫”的评论

那你怎么不买个来发发财呢
他不是那样的人,哈哈哈哈哈~
欲望故事
欲望故事

引用来自“eechen”的评论

PHP可以执行SQL时用bind_param绑定参数查询以避免SQL注入,用htmlspecialchars安全输出内容,避免XSS攻击.
比如PHP使用SQLite绑定参数使用事务批量插入数据库:
<?php
$table = 'CREATE TABLE logs (
  id INTEGER PRIMARY KEY,
  date VARCHAR(19) NOT NULL,
  content VARCHAR(200) NOT NULL
)';
if (!file_exists('test.db3')) {
  $dbh = new PDO('sqlite:test.db3');
  $dbh->query($table);
} else {
  $dbh = new PDO('sqlite:test.db3');
}
$date = date('Y-m-d H:i:s');
$content = time();
$dbh->beginTransaction();
//PHP往SQLite插入100万条记录只用16秒.
for($i=0;$i<1000000;$i++) {
  $stmt = $dbh->prepare('INSERT INTO logs (date, content) VALUES (:date, :content)');
  $stmt->bindParam(':date', $date, PDO::PARAM_STR, 19);
  $stmt->bindParam(':content', $content, PDO::PARAM_STR, 200);
  $stmt->execute();
}
$dbh->commit();
$dbh = null;

引用来自“七液”的评论

很喜欢秀自己智商下限嘛~XSS,CSRF这些都有针对性封杀,所谓的一次性封杀早就是必过的防御了。一个木马如果连杀软都过不去,本身就是不合格的。这些培训教程里面早就有如何绕过常见过滤的方法了。。。

引用来自“xia-yongsheng”的评论

大神,给个绕过pdo预处理的注入栗子让我开开眼界好不好?

引用来自“七液”的评论

6000 黑市上自己买。安全公司早就有泄漏的了。
那你怎么不买个来发发财呢
七液
七液

引用来自“eechen”的评论

PHP可以执行SQL时用bind_param绑定参数查询以避免SQL注入,用htmlspecialchars安全输出内容,避免XSS攻击.
比如PHP使用SQLite绑定参数使用事务批量插入数据库:
<?php
$table = 'CREATE TABLE logs (
  id INTEGER PRIMARY KEY,
  date VARCHAR(19) NOT NULL,
  content VARCHAR(200) NOT NULL
)';
if (!file_exists('test.db3')) {
  $dbh = new PDO('sqlite:test.db3');
  $dbh->query($table);
} else {
  $dbh = new PDO('sqlite:test.db3');
}
$date = date('Y-m-d H:i:s');
$content = time();
$dbh->beginTransaction();
//PHP往SQLite插入100万条记录只用16秒.
for($i=0;$i<1000000;$i++) {
  $stmt = $dbh->prepare('INSERT INTO logs (date, content) VALUES (:date, :content)');
  $stmt->bindParam(':date', $date, PDO::PARAM_STR, 19);
  $stmt->bindParam(':content', $content, PDO::PARAM_STR, 200);
  $stmt->execute();
}
$dbh->commit();
$dbh = null;

引用来自“七液”的评论

很喜欢秀自己智商下限嘛~XSS,CSRF这些都有针对性封杀,所谓的一次性封杀早就是必过的防御了。一个木马如果连杀软都过不去,本身就是不合格的。这些培训教程里面早就有如何绕过常见过滤的方法了。。。

引用来自“xia-yongsheng”的评论

大神,给个绕过pdo预处理的注入栗子让我开开眼界好不好?
6000 黑市上自己买。安全公司早就有泄漏的了。
返回顶部
顶部