首页 > Sql注入和Html注入

Sql注入和Html注入

举例说,有一间公司的网页服务器上有一个留言板的代码,用来让用户发表简短的口信,例如:

hello word!!!!

不过,这个代码原来有漏洞。一个意图入侵者得悉这间公司采用了有问题的代码,于是试图通过留下一条附带有代码的口信,例如:

Nice Site,  I think I'll take it.>

如果另一个用户查看了该页,被注入的代码即运行。该代码可让攻击者扮装成另一个用户。然而这个相同的软件bug可被用户意外的触发,亦即造成该网站暴露 HTML 

That post was awesome, :>)

 在这个案例里表情符号可造成 HTML 代码不对称,因为不对称的HTML标签被注入到代码里。

大部分这类的问题与哪些可能输入数据,或者特殊数据效果的错误假设相关。一些软件开发员可能犯下危险假设的经范型例如下:

假设某程序接口使用的元字符永远不会在输入中出现;例如假设英文半角标点符号如引号或者半括号永不出现。 假设只有阿拉伯数字字符会当成输入键入。 假设输入永远不会超过固定字段大小。 假设阿拉伯数字只会相等或少于上限。 假设阿拉伯数字只会相等或大于下限。 假设用户端原本服务端提供的默认值 (例如窗体的隐藏字段或者cookie) 无法于用户端被用户修改。这种假设忽略了众所皆知的攻击如cookie下毒:在此cookie值被恶意用户强制设置。 假设从输入端取得指针或者数组索引不会出问题。 假设输入端永远不会提供关于它自己或者其他相关值得虚假信息,例如文件大小



恶意用途的代码注入可包括:

通过SQL注入(见下文)随意修改数据库中的值。影响所及可从某网站外观损毁,到对敏感数据严重的破坏。 当用户拜访恶意网站时,通过网页浏览器或其插件的漏洞安全隐患,进行代码注射,以便安装流氓软件到用户机器上。 通过PHP或者ASP注入安装流氓软件或者运行恶意代码于服务器端。 于UNIX系统利用Shell注入安全隐患对setuid root二进制数据作修改,达成提权到root使用权限的目的。 于视窗系统利用Shell注入安全隐患对系统服务做手脚,达成提权到本地端系统使用权限的目的。 从网页浏览器利用HTML/脚本注入(跨网站脚本)进行连接窃取 / cookies窃取进而冒充他人,取得他人个人敏感数据。

善意使用 某些人可能会出于善意而使用代码注射。例如,通过代码注射以改变或者调试某程序或者系统的行为可以"摆弄"系统以某种方式表现其行为而不怀任何恶意。打比方说:

代码注射可以添入某原本搜索结果页面设计上没有的字段,方便用户。 通过对原本设计默认函数没有曝光的字段赋值,代码注射可提供一个全新的方式来过滤、排序、或者归类数据。 这些人诉诸此种替代手段大致是下面几种原因之一:

对软件中希望改进函数进行润饰的其他方法证明不可能,或者 其他对软件修改的方式代价过高,或者 其他对软件修改的方式过度艰苦。 一般开发社区对以此为目的的代码注射不表欢迎。他们称这种行为为三脚猫、半调子、或者骇 / 黑程序。(kludge or hack)

某些开发者允许或者甚至表扬代码注射的使用来“加强”他们的软件;通常是因为该方案提供了较不昂贵的方式来实现新的或者特殊化的功能。不幸的是,其副作用与无法列管的蕴含式可能相当危险。

一般来说,即使相当善意的代码注射使用都不被建议使用。

非蓄意的用途 某些用户可能会不经意的进行代码注射,因为他们对程序提供的输入没列在当初开发系统者的考虑中。例如:

用户可能视某个包含表示字符或者字符字符串为合法输入,而不知该字符被开发者所保留而有特殊意义 (像 "张三 & 李四" 里的 "&" 字符,或者英文约翰的 M&M 巧克力: "John's M&M's"里头的单引号)。 用户可能会提交格式错乱的文件做为输入。这种行为对单一程序没什么问题,但可能对整个接收系统是灾难。

避免代码注射 要避免代码注射的种种问题,得充分发挥输入输出处理保全,例如:

输入确认。 更换危险字符。例如在PHP通过addslashes()函数保护SQL注入。 输入编码。 输出编码。 采用其他没有饱受代码注入漏洞困扰的编程实现,例如“参数化SQL查询” ("parameterized SQL queries" 又名 "prepared statements" 亦有时称 "bind variables") 。

转载于:https://www.cnblogs.com/cooper/archive/2010/03/23/1692792.html

更多相关:

  • THE START更新堪称轻量级MATLAB的一款软件最新版-Maplesoft Maple 2019.2 中文版。Maple是符号和数字计算环境,也是一种多范式编程语言,由Maplesoft开发,还涵盖了技术计算的其他方面,包括可视化,数据分析,矩阵计算和MATLAB连接。MapleSim工具箱添加了用于多域物理建模和代码生成的...

  • 同学们,你们在学习他人的代码,是否见过这样的代码 def main(): def user_info(gender): 当你还是个小萌新时,你一定会认为这是个很牛逼的语法。 当你有了一点基础时,你一定会想要了解这个语法,并且尝试去使用它。 那么今天,我们便来了解这个牛语法。 有了一点点的python基础,我们来看这段代...

  •     自从用了这些快捷键,鼓励师也不需要了,代码开发效率蹭蹭提升!!! ctrl+shift+[折叠代码 (这个比ctrl+k ctrl+l、ctrl+k ctr+j不知道好用多少倍!) ctrl+shift+]展开代码 ctrl+shift+T打开手贱不小心关掉的窗口 【推荐】ctrl+shift+O打开当前文件...

  • 在提交代码之前,建议最好先Fetch代码下来(如果有冲突,系统会提示),然后再操作Merge到本地分支,这样做是为了避免有其他人同时修改了当前分支,如果直接用Ctrl+T(pull代码)极有可能覆盖本地分支最新代码,安全起见先Fetch代码(Ctrl+Alt+Shift+1)——所谓:小心驶得万年船!...

  • 每次复制代码时,如果代码里有 // 这样的注释就容易让格式乱掉,通过下面的设置就可以避免这种情况。 粘贴代码时取消自动缩进 VIM在粘贴代码时会自动缩进,把代码搞得一团糟糕,甚至可能因为某行的一个注释造成后面的代码全部被注释掉,我知道有同学这个时候会用vi去打开文件再粘贴上去(鄙人以前就是这样),其实需要先设置一下 s...

  •   同学们大家好,我是小伊同学,上一节我们介绍了一些常用API,今天我们接着来学习一组API,那就是获取用户身份信息的API。  在微信小程序中,我们往往需要获取用户的身份信息,比如昵称、头像、性别、地区等。要得到这些信息,就需要我们调用获取用户信息的api了。在小程序中,微信非常重视对用户隐私的保护,因此有很多关于获取用户信息的...

  • UTRAN接口的通用协议模型如下图: 通俗地讲,通讯网络由终端(terminal)、连接(links)、网络节点(nodes)组成, links将nodes 关联起来。源终端(MO)发送的消息是怎样才能到目的终端(MT)呢? 消息经过links 和nodes,直至到达MT,其中关键是nodes怎么路由(route)消息到最终...

  •        Linux是一个多用户的操作系统,用户要使用该系统,首先必须登录系统,使用完系统后,必须退出系统。用户登录系统时,为了使系统能够识别自己,必须输入用户名和密码,经系统验证无误后方能进入系统。在系统安装过程中可以创建两种帐号:        1、root--超级用户帐号,使用这个帐号可以在系统中做任何事情。      ...

  • 1.用户基本概述 1.1.什么是用户? 用户指的是能够正常登录Linux或Windows系统(可以理解为你租了房⼦,能够正常入驻) F:那Linux与Windows系统的用户有什么区别? Q:本质都是登陆系统,只不过Linux⽀持多个用户 同时登陆。 F:难道Windows就不算多用户操作系统吗? Q:其实不是,在Windows...

  • 背景信息 用户通过Telnet登录设备时,设备上必须配置验证方式,否则用户无法成功登录设备。设备支持不认证、密码认证和AAA认证三种用户界面的验证方式,其中AAA认证方式安全性最高。 采用AAA本地认证方式实现用户通过Telnet登录设备的身份认证,设备上需要开启Telnet服务,将用户界面(以VTY用户界面为例)的验证方式设...