STEM-工程挑战 · 2020年3月2日 0

防止SQL注入攻击

 

 

难度 <! – 9 – >
所需时间 短(2-5天)
先决条件 以前的编程经验(任何语言)。要完成这个项目,你需要学习一些基本的SQL和PHP。
材料可用性 可以上网的电脑。
费用 非常低(低于20美元)
安全 没有问题

 

摘要

您有多少个网站存储了该商店的个人信息,如您的姓名,电子邮件,电话号码或邮寄地址?如果运行这些网站的人不小心,黑客可能会未经授权访问,甚至更改或删除您的信息。他们可以使用称为SQL注入的东西来执行此操作,这涉及将恶意代码输入到网站上的文本字段中。在这个项目中,您将学习SQL注入的工作原理并找出如何防止它。

目的

 

修复可向SQL注入开放的网站中的漏洞。

 

积分

 

Ben Finio,PhD,Science Buddies

引用本页

此处提供了一般引用信息。请务必检查所使用方法的格式,包括大小写,并根据需要更新引文。

MLA风格

菲尼奥,本。”防止SQL注入攻击。” 科学伙伴,2019年1月26日,https://www.sciencebuddies.org/science-fair-projects/project-ideas/Cyber​​_p008/cybersecurity/sql-injection。2019年7月6日访问。

 

APA风格

菲尼奥(2019年1月26日)。防止SQL注入攻击。从…获得https://www.sciencebuddies.org/science-fair-projects/project-ideas/Cyber​​_p008/cybersecurity/sql-injection

最后编辑日期:2019-01-26

简介

SQL injection 

结构化查询语言 SQL 是一种旨在轻松管理数据库的计算机语言。这包括快速查找数据,更新数据或删除数据等内容。许多网站,如在线购物网站和金融机构都拥有庞大的数据库,可以存储大约数百万用户的数据,并使用SQL来管理这些数据库。例如,当您登录到存储有关您的某些信息的网站时,它可能会使用SQL在表中查找您的用户名,然后提取有关您帐户的相应信息。如果您更新了有关您帐户的内容(例如您的邮寄地址),它将使用SQL覆盖数据库中的旧地址并将其替换为新地址.CodeAcademy和Khan Academy在参考书目中提供的教程介绍了SQL以及如何使用它来创建,编辑和搜索数据库。如果您还不了解SQL,则应至少完成其中一个教程以学习基础知识。

很多时候,这些数据库可能包含敏感的个人信息,如电话号码,电子邮件和邮寄地址,以及信用卡或社会安全号码(非常敏感的信息应加密而不是存储为明文,但情况并非总是如此)。理想情况下,只有授权用户才能访问数据库中的特定信息。对于网站,这通常意味着个人用户可以访问他们自己的信息,并且该网站的管理员可能能够访问所有用户的信息。但是,黑客可能会出于各种原因窃取信息:向垃圾邮件发送者出售电子邮件地址,使用信用卡号码进行非法购买,或者只是造成中断并损害公司声誉他们破解。由于这会对用户和公司造成尴尬,麻烦或经济损失,因此确保数据库保持安全非常重要。

黑客可以用来获取对数据库的未授权访问的一种方法是 SQL注入.SQL注入是一种特定类型的代码注入,黑客欺骗网站执行SQL命令,导致未经授权的数据访问。例如,可以通过在网站上的文本输入字段中输入巧妙格式化的SQL语句(如搜索框或用户名/密码登录)来完成此操作。使用具有不同可靠性级别的多种技术可以防止SQL注入,例如清理输入参数化语句

参考书目中的一些参考文献描述了SQL注入如何更详细地工作,甚至可以让你自己尝试(当然是假的数据库!)。在查看基本的SQL教程之后,您应该查看这些参考资料,以了解如何执行SQL注入攻击,如何防止它。然后,继续执行此项目的过程,您将面临修复易受SQL注入攻击的网站的挑战。为此,您将使用Science Buddies创建的虚拟机(运行MicrosoftWindows®)的实例设置 Web服务器。这允许您使用远程桌面协议(RDP)访问自己的虚拟机副本,并运行和修改您自己的网站副本。如果您对这些术语不熟悉或不熟悉,则应在开始项目之前对其进行更多研究。您需要查看如何在计算机的操作系统中使用远程桌面协议。

术语和概念

    • 结构化查询语言(SQL)
    • 数据库
    • 加密
    • 明文
    • 哈克
    • SQL注入
    • 代码注入
    • 消毒输入
    • 参数化语句
    • 网络服务器
    • 实例
    • 虚拟机
    • 远程桌面协议(RDP)

 

问题

 

    • 什么是SQL注入以及如何防止它?
    • 成功的SQL注入攻击的一些真实示例是什么?什么类型的数据被盗以及后果是什么?
    • 对网站使用的其他常见类型的网络攻击有哪些?它们与SQL注入有何不同?

参考书目

 

材料和设备

    • 可上网的电脑
    • 使用信用卡的成人(即使您不花钱,也需要信用卡注册免费的亚马逊网络服务层)

 

实验程序

网络安全项目警告 

网络安全项目可能很有趣,但如果您不小心,它们也会让您陷入困境。在进行网络安全项目时,请确保遵循这些规则:

 

 

  • 未经个人(或拥有计算机的人)的同意,不得攻击任何个人,计算机,系统或网络。例如,除非您先获得他们的许可,否则不要试图猜测某人的电子邮件密码并登录他们的帐户,或者在未经网站所有者许可的情况下尝试入侵网站。
  • 即使您同意进行攻击,攻击也应仅用于学习目的,您应该帮助个人或组织解决您发现的任何问题(这称为”白帽” 黑客行为)。例如,如果您能够猜出某人的密码,您应该告诉他们他们需要选择一个更强的密码(并帮助他们学习如何)。不要阅读他们的电子邮件,更改他们的任何帐户设置,查看私人信息或图片等文件,或告诉其他人他们的密码.
  • 如果您的项目涉及人类受试者,即使您已经同意,您仍可能需要获得您的科学博览会或机构审查委员会的批准(类似于心理学或医学实验规则)。看到此页面了解更多信息。
  • 不要伪装成在线的其他人,公司或其他组织。这包括伪装成社交媒体网站上的其他人,设置虚拟网站,使其看起来像信誉良好的公司的真实网站,或发送”网络钓鱼” 或其他设计看起来像是由其他人发送的电子邮件.(一项对照实验,只有研究参与者才能访问此类网站或电子邮件的示例。)
  • 不要使用非法获取的数据(例如,从公司员工数据库中窃取的联系信息),即使它被其他人窃取并已在网上发布。
  • 不要公开发布敏感的个人信息,即使是经过同意获得的。例如,如果您的项目涉及访问人们的联系信息(合法),请不要在科学展览会的”结果” 部分发布某人的姓名和地址。完成项目后,您应该销毁任何此类信息(通过粉碎纸张或删除文件)。
  • 请勿在连接到互联网的计算机上安装或运行任何恶意软件(病毒,恶意软件,间谍软件,特洛伊木马等)。该软件很容易传播到其他计算机,并失去控制.

如果您对项目有任何疑问或疑问,请在开始之前咨询您的老师或科学博览会管理员。

 

 

设置虚拟机

注意:本节包含有关使用Amazon Web Services设置免费套餐帐户的说明。如果亚马逊更改其服务,您需要遵循的确切说明将来可能会发生变化。

 

 

    1. 转到 https://aws.amazon.com/free/并创建一个免费帐户。您需要使用信用卡来创建帐户,但如果您只使用免费服务,则不会向您收取费用。
    2. 登录帐户后,使用右上角的下拉菜单将地区设置为”US West(Oregon)” (菜单应出现在您的姓名旁边)。
    3. 选择左上角的”服务” ,然后选择”计算” 下的”EC2″ 。

 

  1. 重要:在页面顶部,检查”资源” 下是否列出了任何”正在运行的实例” (例如,如果您之前启动此项目并返回到该项目,则可能已经有一个正在运行)。如果这样做,请选择”正在运行实例” ,然后右键单击该实例,选择”实例状态→终止” ,然后等待实例关闭(”实例状态” 将更改为”已终止” )。免费服务层仅允许您一次运行一个实例。如果您一次运行多个实例,系统会向您的信用卡收费,因此请务必在启动新实例之前检查此信息。
  2. 单击”启动实例” 按钮。
  3. 在”选择亚马逊机器图像” 页面上,单击左侧面板上的”社区AMI” 。
  4. 搜索”science-buddies-sql-injection” 并点击旁边的”选择” 按钮。
  5. 在”选择实例类型” 页面上,选择”t2.micro” 类型,该类型标记为”符合免费资格的条件” 。然后单击页面顶部的”6.配置安全组” 。
  6. 在”配置安全组” 页面上,单击旁边的”X” 删除现有的”RDP” 规则。
  7. 点击”添加规则” 以添加新规则。将”类型” 更改为”所有流量” ,将”源” 更改为”我的IP” 。这可确保只能从您的IP地址访问实例。然后单击”查看并启动” 。
  8. 在”查看实例启动” 页面上,单击”启动” 。
  9. 在弹出窗口中,选择”在没有密钥对的情况下继续” ,然后选中确认框。然后单击”启动实例” 。
  10. 在”启动状态” 页面上,单击”查看实例” 。您应该看到列出了您的实例(此时,您应该只有一个 – 按照步骤4中的说明终止任何其他实例)。等到它在”实例状态” 下显示”正在运行” ,表示您的虚拟机现已启动并运行。
  11. 在新标签页中将”IPv4公共IP” 地址复制到浏览器的地址栏中。这应该会带您进入Science Buddies创建的示例登录页面(它应该在顶部说”Cyber​​security:SQL Injection” )。如果收到错误消息但无法访问该页面:
      1. 确保您的实例正在运行。如果在”实例状态” 下仍然显示”待处理” ,则可能需要再等几分钟才能开始运行。
      2. 确保按照步骤7-9中的说明正确设置安全规则。这只允许您从用于启动实例的相同IP地址访问虚拟机。因此,例如,如果您在家中设置此项目,然后尝试从学校访问虚拟机,则它将无法工作,因为学校计算机具有不同的IP地址。

     

尝试SQL注入

Science Buddies提供的网站是一个简单的网站示例,用于存储有关数据库中用户的信息。每个用户都有其他用户可以看到的”公共” 信息(他们喜欢的颜色)和只有他们可以看到的”私人” 信息(他们的电子邮件地址)。用户必须使用密码登录该站点,并可以按名称搜索其他用户以查找公共信息。但是,该站点易受SQL注入攻击,允许恶意用户访问他们无权查看的信息。请尝试以下方法:

 

 

    1. 使用用户名”Chris” 和密码”science” 登录该站点。您应该能够看到自己喜欢的颜色和电子邮件地址。
    2. 搜索用户名”Steve” 。您应该能够看到史蒂夫最喜欢的颜色,但不能看到他的电子邮件地址。
    3. 点击右上角的”退出” 按钮。
    4. 现在想想要从数据库窃取私人信息的黑客。您想以Steve身份登录,这样您就可以看到他的电子邮件地址,但您不知道他的密码。你可以在登录页面上使用SQL注入登录吗?如果遇到问题,请记得在参考书目中阅读有关SQL注入的参考资料。
    5. 现在您想要获得更多电子邮件地址。您是否可以使用SQL注入来使搜索页面显示数据库中所有用户的列表?然后,使用您以史密斯身份登录的相同技巧,一次登录一个以获取他们的电子邮件地址?
    6. 一次登录每个用户是很多工作。你能弄明白如何让搜索页面一次显示每个用户的电子邮件地址吗?
    7. 继续像黑客一样思考。您可能对数据库造成哪些其他恶作剧或损害?尝试以下操作 – 其中一些需要一些创造力!
        1. 添加新用户。
        2. 修改现有用户的数据。
        3. 删除现有用户。
        4. 获取用户密码。
        5. 创建一个全新的表格。

       

  1. 如果要重新启动原始数据库,请返回到该过程的”设置虚拟机” 部分中的步骤4,终止您的实例,然后开始新的实例。

防止SQL注入

现在您已经发现了网站中的漏洞,您必须弄清楚如何修复它们。您可以通过编辑虚拟机上的PHP文件来执行此操作,该文件托管您从常规计算机访问的网站。

 

    1. 使用远程桌面协议连接到您的虚拟机。请记住,您可能需要查看如何使用您的操作系统执行此操作。使用这些凭据:
        • “设置虚拟机” 部分的步骤14中的IP地址。
        • 用户名:管理员
        • 密码:ScienceBuddies!

       

 

  1. 在警告屏幕上选择”是” 进行连接。
  2. 在虚拟桌面(不是常规桌面)上,导航到C:\ Science Buddies \ SQL Injection。此文件夹包含示例网站的PHP文件.”login.php” 包含登录页面的代码,”search.php” 包含搜索页面的代码。您无需编辑其他文件。
  3. 在虚拟机上,在文本编辑器中对其中一个文件进行简单更改并保存(例如,更改登录页面上的某些HTML文本)。然后,刷新网站(在常规桌面上的浏览器中),您应该看到更新的页面。在继续并进行更多更改之前,您可能希望制作原始PHP文件的备份副本。
  4. 现在对于这个项目真正的人:你能编辑login.php和search.php来修复他们的SQL注入漏洞吗?这将需要您的一些研究。目前防止SQL注入的最佳做法是什么?如果你回到”试用SQL注入” 部分(记得保存你的PHP文件并首先刷新你的浏览器),你在那里尝试的方法是否仍然有效?

如果你喜欢这个项目,你可能会喜欢探索这些相关的职业:

信息安全分析师

您是否见过有关公司或政府机构如何被”黑客入侵” 以及人们的个人信息(如姓名,地址或信用卡号码)被盗的新闻?信息安全分析师的工作是防止这种情况发生。组织雇用信息安全分析师来分析针对其计算机系统的可能威胁,其中包括试图窃取数据的恶意黑客以及无意中忘记退出计算机的粗心员工。然后,他们制定计划,以防止这些威胁,并在它们出现时处理它们。对于那些想要跟上不断变化的计算机和互联网世界的人来说,这是一个激动人心的职业。了解详情

 

渗透测试仪

在电影和媒体中,计算机黑客通常被描绘成窃取金钱或重要信息的坏人 – 罪犯。如果你能成为好的黑客怎么办?有人的工作是找到计算机系统的安全漏洞;但是,在罪犯找到问题之前,你可以帮助修复问题,而不是利用它们谋取私利。这就是渗透测试人员 – 也称为”白帽子” 或”道德” 黑客。公司付钱给故意试图侵入他们的系统以暴露漏洞。这有点像支付某人试图闯入你的房子,这样你可以修理一个破锁或松动的窗户,如果他们找到他们的方式。如果你一直梦想成为一名黑客,但又不想违法,那么这可能就是你的职业!了解更多

 

安全事故响应者

安全事件响应者,也称为入侵分析师或事件响应工程师,就像网络世界的”消防员” 。公司可以采取措施来保护他们的计算机网络和系统,但有时候预防还不够,网络攻击仍然会发生。客户信用卡信息等敏感数据可能被盗,整个网站可能被删除或更改,或者个人联系信息可能被泄露。发生这种情况时,事件响应者必须迅速采取行动以找到攻击源并将其关闭。他们还将分析攻击的发生方式,确定损害的范围,以及如何防止再次发生。了解详情

 

数据库管理员

数据库是类似记录的集合,例如公司销售的产品,具有州的驾驶执照的所有人的信息,或医院中的医疗记录。数据库管理员在确定如何组织,访问,存储,搜索,交叉引用和保护所有这些记录方面具有重要作用。执法部门,政府机构以及可以想象的各类业务都需要他们的服务。管理大型数据库对于科学研究也至关重要,包括了解和开发疾病治疗方法。了解更多

变体形式

 

  • 你认识一个拥有自己网站的人,比如经营博客的朋友,还是拥有自己企业的人? 首先获得他们的许可,然后查明他们的网站是否容易受到SQL注入攻击.请勿尝试未经授权访问任何实际数据。如果网站对SQL注入攻击持开放态度,您能告诉他们如何修复它吗?
  • 网站可能容易受到其他类型的攻击,如跨站点脚本(XSS)或远程文件包含。研究这些类型的网络攻击,并做一个项目,展示如何预防它们。
  • 和朋友一起试试这个项目。您可以各自设置自己的虚拟机,然后尝试在修复自己的漏洞的同时攻击其他人.
  • 如果网站受到SQL注入保护但黑客仍然想要侵入用户的帐户怎么办?他们可以通过猜测用户的密码来实现吗?尝试此项目查找出.