|
原帖由 xinkede 于 2010-7-27 10:58 发表 ![]()
常见的ABAP漏洞
ABAP程序的漏洞很难被标准编译器或代码分析器检测到,因为这些漏洞并不是因语法错误产生的,它们更像是普通的编程步骤或一些预置程序,这些预置可能是开发者的疏忽,也可能是开发者故意留在系统中以备以后利用。我们一起来看看这些常见ABAP程序漏洞:
SQL Injection
定义
SQL注入是一种攻击应用服务器或web网站的方式,是通过尝试在普通用户的输入内容中嵌入SQL语句,来操纵Open SQL语句的执行内容。下面的例子演示了一个普通的SQL语句是如何被用于进行SQL注入攻击的:
正常SQL语句
SELECT * FROM table WHERE name = 'userinput'.
被攻击者用SQL注入修改后的语句
SELECT * FROM table
WHERE name = ' a'; DROP TABLE users;
SELECT *
FROM table1
WHERE name = '%''.
上面的示例中,攻击者没有输入应用或web网站的用户名,而是使用了SQL注入攻击,用红色部分嵌入SQL的文本替换了用户名。这样,SQL语句的查询结果就从简单的读取用户名与用户输入相匹配的数据,变成了先读取用户名是’a’的数据,然后再删除用户表,最后再读取表’table1’中的所有数据。攻击者已经很轻松地获取到了未授权的特定表的数据,还删除了包含所有用户信息的表。
对业务有何影响?
此漏洞会导致数据被破坏或SAP数据库中的数据被恶意篡改。这也会使公司信誉受损,并因此影响公司收益。举例说明SQL注入攻击者会做些什么事情:
攻击者使用你们公司的在线商店来购买产品。如果在付款流程中的某个web页面不够安全,攻击者用下面的语句来替换他的用户名:
a'; SELECT *
FROM CreditCardInfo
WHERE name = '%'
这样,攻击者就能成功地获取了您公司所有注册用户的信用卡信息。
如何修复漏洞?
在ABAP代码中,用户输入的所有内容都应该在插入于SQL语句前进行验证和清理,以便移除伪装成用户输入的各种恶意代码和命令。
那个编程语言没这个漏洞?写文章的人有脑子不? |
|