20189221 2018-2019-2 《密码与安全新技术专题》第一周做业

20189221 2018-2019-2 《密码与安全新技术专题》第一周做业

课程:《密码与安全新技术专题》程序员

班级: 201892
姓名: 郭开世
学号:20189221
上课教师:谢四江
上课日期:2019年2月26日
必修/选修: 选修web

1.本次讲座的学习总结

讲座主题:web安全与内容安全

学科背景:
随着信息技术的不断发展(通讯→计算机→网络→网络化社会),网络安全技术一直在不断进步(斯巴达加密榜→密码技术、通讯保密、内容篡改)。算法

典型攻击方式:sql

  • 高等持续性攻击(APT):2010年6月震网(stuxnet)攻击⇒物理隔离是不安全的
  • 第三方恶意代码注入:2015年9月Xcode Ghost⇒底层开发软件在编译过程攻击
  • 上帝攻击模式(GPT):基于全球全网大数据能力对用户进行用户画像

威胁方-防御方的非对称性shell

  • 攻防技术非对称
  • 攻防成本非对称
  • 攻防主体非对称

常见的Web漏洞:数据库

  • SQL注入:输入验证不足或Web应用程序中SQL语句构造不当
  • 跨站脚本攻击漏洞
  • cookie欺骗
  • CSPF(跨站请求伪造)
  • web信息泄露
  • 权限问题
  • 逻辑漏洞
  • 第三方程序漏洞
  • web服务器解析漏洞
  • 弱口令
  • SSRF

2.学习中遇到的问题及解决

  • 问题1:对于SQL语言记忆模糊,对理解SQL注入攻击形成阻碍
  • 问题1解决方案:查询本科时的学习课件,从新安装SQL server熟悉SQL语言。

3.本次讲座的学习感悟、思考等)

张健毅老师讲课节奏很好,声音颇有磁性。以前本科时学习过一些web和数据库相关的课程,当时的课程主要是功能上的实现,对于安全方面确实没有进行很好的设计与考虑。既然已经进行安全、密码方面的研究生学习,在从此的课程设计、项目实现等具体工做是要时刻保持安全的思惟。这学期我还选修了《网络攻防实践》,相信这次课程对于这门课也有很大的启发。编程

4.SQL Injection最新研究现状

因论文库的限制,我找的论文都是IEEE中的,具体信息见参考文献。安全

SQL注入攻击对数据库驱动的Web应用程序构成严重的安全威胁。这种攻击使攻击者能够轻松访问应用程序的底层数据库以及这些数据库包含的潜在敏感信息。黑客经过专门设计的输入,能够访问数据库的内容,不然没法这样作。这一般经过更改Web应用程序中使用的SQL语句来完成。服务器

常见的SQL注入攻击:

重言式(tautology)

攻击者的意图是绕过身份验证并从Web应用程序数据库中提取信息。在这种类型的攻击中,黑客将代码注入一个或多个条件语句,以便这些语句的执行结果老是评估为真[6]。若是攻击成功,代码将显示全部返回的记录或执行某些操做,前提是至少返回一条记录。通常返回true的经常使用语句是1 = 1.这意味着经过在原始查询语句中附加“或1 = 1”,查询结果将始终为true。cookie

非法/逻辑错误查询(illegal/logically incorrect queries)

攻击目的是识别可注射参数,执行数据库指纹打印以及提取机密数据。此类攻击基于编写生成错误消息的查询语句。拒绝查询时,将从数据库返回一条错误消息,其中包含有助于攻击者的有用调试信息。

联合查询(union query)

绕过身份验证过程并经过将union运算符插入到普通查询中来提取数据。

堆叠查询(Stacked Queries)

此攻击插入恶意SQL查询,这将致使在与数据库的一个链接中执行一系列SQL语句。若是运算符能够处理许多SQL查询; 在每一个查询结束后添加。
例:SELECT * FROM users WHERE user name = admin AND password = 3333; DROP TABLE用户; - ;.

条件陈述

此攻击经过使用IF语句完成,有三种类型:基于时间,基于错误和基于内容。
例:http://www.vulnerable.com/goods。a?id = 34; if +(system user = sa)+ WAITFOR + DELA Y +0:0:10。

存储过程(stored procedures)

攻击者试图用恶意输入执行数据库中存在的存储过程

相关研究


常见的SQL检测与预防:

静态分析(Static Analysis)

静态分析是在到达执行阶段以前在系统源代码中找到弱点和恶意代码,主要是语言特定的。
静态分析缺点包括:

  • 开发人员须要手动更改易受攻击的部分
  • 没法识别存储过程攻击
  • 其结构直到运行时才被指定

动态分析(Dynamic Analysis)

动态方法技术可用于分析由Web应用程序使用用户输入数据生成的动态或运行时SQL查询。
动态技术下在运行时生成的SQL注入检测方法,在将查询发布到数据库服务器以前执行查询,查询的异常性质致使它甚至不会传递到数据库执行。
动态分析的主要缺点是在运行时生成模型所涉及的开销。

组合方法(Combined Approach)

组合方法利用静态分析和动态分析方法的优点来检测和防止SQL注入。在静态阶段,识别热点,以后建立模型,指示能够在该热点处进行的全部有效查询。在运行时,将检查运行时查询以查看它们是否与其模型匹配。若是不是,则不会将查询发送到数据库以供执行。

sql注入披露和威慑的仿真

Padma N Joshi ; N. Ravishankar ; M. B. Raju ; N.CH. Ravi等提议开发一个用于身份验证访问的安全系统并应用SQL注入攻击来检查其安全性。换句话说,设想的系统不从文本框中得到任何狂野的字符。
算法设计以下:

  • 用n生成异常模式获取用户生成的查询SPL []模式列表
  • 设置I等于1并在I中增长1,直到它在此循环期间不等于n次重复和后续步骤
  • 若是二者相同,则比较全部值查询长度和模式值,而后计算异常值
  • 若是任何异常分数值异常大于或等于阈值,则查询将被拒绝
  • 不然返回查询6:中止

经过删除SQL查询的参数值来检测SQL注入攻击

Rajashree A. Katole ; Swati S. Sherekar ; Vilas M. Thakare等介绍了保护Web应用程序免受SQL注入攻击的SQL注入检测机制。他们提出了使Web应用程序可以在丢失任何数据以前检测代码注入(SQL注入)攻击的新方法。该经过使用组合的静态和动态分析来检测注射攻击。参数值在动态即运行时从SQL查询中删除,并与固定或静态分析的SQL查询进行比较,即提早进行比较。

一种二阶SQL注入检测方法

陈平提出的方法基于ISR(指令集随机化)检测二阶SQL注入攻击。该方法随机化Web应用程序中包含的可信SQL关键字,以动态构建新的SQL指令集,并在DBMS以前添加代理服务器,代理检测收到的SQL指令是否包含标准SQL关键字以查找攻击行为。

该方法采用在Web服务器和数据库服务器之间构建代理服务器。代理服务器有两个主要功能,一个是检测SQL注入攻击,另外一个是将无害指令去标准化为标准SQL语句并将其转发给DBMS。

使用SHA-1算法和语法感知防止SQL注入的新方法

Qais Temeiza ; Mohammad Temeiza ; Jamil Itmazi等提出了一种基于密码学和语法感知来防止SQL注入的新方法。
使用两种方法来防止SQL注入攻击:

  • 嵌入式SQL语句的解决方案

使用了快速安全的SHA-l algorthim。这种方法是经过删除查询属性值,而后散列查询并将哈希值与先前生成和散列的普通查询哈希值进行比较。实如今使用散列机制的嵌入式查询中防止SQL注入。若是两个哈希值相同则执行SQL查询,若是不是SQL查询将被拒绝。

  • 存储过程的解决方案

使用语法感知(在易受攻击的存储过程当中阻止SQL注入)来经过搜索特定的SQL注入签名,shell命令以及可用于执行攻击的任何Unicode字符来阻止存储过程当中的SQL注入攻击。

检测和预防SQL注入攻击的混合方法

Ahmad Ghafarian等在An emulation of sql injection disclosure and deterrence中提出了一种新的混合方法来检测和防止SQLIA,是静态和动态方法的结合。该方法包括三个阶段,即数据库设计,实现和公共网关接口(CGI)。

  • 数据库设计阶段:扩充全部数据库表,以包含且仅包含美圆符号等符号的记录。
  • (CGI)阶段:提出了一种算法其任务是动态地处理和监视全部传入查询的执行。任何用户查询在被授予执行权以前都应该经过该算法,不然它将被拒绝。
  • 第三阶段(数据库)使用该算法在收到的SQL查询和先前预期的SQL查询之间进行字符串匹配过程。此比较的结果将自动与预期的有效查询匹配。此比较过程的输出将肯定是否存在任何类型的SQLIA,若是存在,则查询将被拒绝。

优势:

  • 因为在查询时执行算法,所以程序员不须要进行防护性编程。这节省了大量的编程时间。
  • 该算法只编写一次,并将针对每一个Web应用程序查询执行。因此,没有开销。
  • 它能够处理任何类型的查询正常或可能的SQLIA
  • 该算法独立于平台,所以能够在不一样的平台上使用,例如。NET,PHP等
  • 没有数据输入限制。

缺点:

  • 此方法仅防止重言式 SQL注入。
  • 因为Table扩充,它有一些开销。
  • 因为在数据库表上执行额外记录,它有开销。

参考资料

相关文章
相关标签/搜索