您好,欢迎来到『达网』官方网站
达网
全国服务热线  
联系在线客服
达网国际站 | 达网学院 | 付款方式 | 促销专区

PHP代码网站防范SQL注入漏洞攻击的建议


所有的网站管理员都会关心网站的安全问题。说到安全就不得不说到SQL注入攻击(SQL Injection)。黑客通过SQL注入攻击可以拿到网站数据库的访问权限,之后他们就可以拿到网站数据库中所有的数据,恶意的黑客可以通过SQL注入功能篡改数据库中的数据甚至会把数据库中的数据毁坏掉。做为网络开发者的你对这种黑客行为恨之入骨,当然也有必要了解一下SQL注入这种功能方式的原理并学会如何通过代码来保护自己的网站数据库。今天就通过PHP和MySQL数据库为例,分享一下我所了解的SQL注入攻击和一些简单的防范措施和一些如何避免SQL注入攻击的建议。

什么是SQL注入(SQL Injection)?

简单来说,SQL注入是使用代码漏洞来获取网站或应用程序后台的SQL数据库中的数据,进而可以取得数据库的访问权限。比如,黑客可以利用网站代码的漏洞,使用SQL注入的方式取得一个公司网站后台数据库里所有的数据信息。拿到数据库管理员登录用户名和密码后黑客可以自由修改数据库中的内容甚至删除该数据库。SQL注入也可以用来检验一个网站或应用的安全性。SQL注入的方式有很多种,但本文将只讨论最基本的原理,我们将以PHP和MySQL为例。本文的例子很简单,如果你使用其它语言理解起来也不会有难度,重点关注SQL命令即可。

一个简单的SQL注入攻击案例

假如我们有一个公司网站,在网站的后台数据库中保存了所有的客户数据等重要信息。假如网站登录页面的代码中有这样一条命令来读取用户信息。

<?

$q = "SELECT `id` FROM `users` WHERE `username`= ' " .$_GET['username']. " ' AND `password`= ' " .$_GET['password']. " ' ";

?>

现在有一个黑客想攻击你的数据库,他会尝试在此登录页面的用户名的输入框中输入以下代码:

' ; SHOW TABLES;

点击登陆键,这个页面就会显示出数据库中的所有表。如果他现在使用下面这行命令:

'; DROP TABLE [table name];

这样他就把一张表删除了!

当然,这只是一个很简单的例子,实际的SQL注入方法比这个要复杂得多,黑客也愿意花大量的时间来不断尝试来攻击你的代码。有一些程序软件也可以自动地来不断尝试SQL注入攻击。了解了SQL注入的攻击原理后,我们来看一下如何防范SQL注入攻击。

防范SQL注入 - 使用mysql_real_escape_string()函数

在数据库操作的代码中用这个函数mysql_real_escape_string()可以将代码中特殊字符过滤掉,如引号等。如下例:

<?

$q = "SELECT `id` FROM `users` WHERE `username`= ' " .mysql_real_escape_string( $_GET['username'] ). " ' AND `password`= ' " .mysql_real_escape_string( $_GET['password'] ). " ' "; 

?>

防范SQL注入 - 使用mysql_query()函数

mysql_query()的特别是它将只执行SQL代码的第一条,而后面的并不会执行。回想在最前面的例子中,黑客通过代码来例后台执行了多条SQL命令,显示出了所有表的名称。所以mysql_query()函数可以取到进一步保护的作用。我们进一步演化刚才的代码就得到了下面的代码:

<?

//connection

$database = mysql_connect("localhost", "username","password");

//db selection

mysql_select_db("database", $database);

$q = mysql_query("SELECT `id` FROM `users` WHERE `username`= ' " .mysql_real_escape_string( $_GET['username'] ). " ' AND `password`= ' " .mysql_real_escape_string( $_GET['password'] ). " ' ", $database);  

?>

除此之外,我们还可以在PHP代码中判断输入值的长度,或者专门用一个函数来检查输入的值。所以在接受用户输入值的地方一定要做好输入内容的过滤和检查。当然学习和了解最新的SQL注入方式也非常重要,这样才能做到有目的的防范。如果使用的是平台式的网站系统如Wordpress,要注意及时打上官方的补丁或升级到新的版本。如果有讲得不对的地方或不理解的请在评论区留言。文章来自广州网站建设:http://www.gscpp.net转载请保留链接!


《大淘宝》一个短而感人的网络剧今天看完了,短片中播出了淘宝卖家对生活状态的描述让笔者啼笑皆非,同时也触动了很多淘宝卖家和买家的心。当笔者观看完这部网络剧之后笔者从中感悟到了不少SEO的深刻了解,所以借此机会和感悟来写一下自己的深刻理解。

当笔者看完《大淘宝》的1、2集之后对一些开淘宝店的人非常佩服,他们有坚持的精神和充满正能量的力量,为此不断的去奋斗把淘宝店去做好,看完第3集之后让笔者明白了一个道理,无论做什么事情都要坚持不懈而不要半途而成,同主人公一样的去奋斗一件事情,所谓贵在坚持最后得到的则是完美的一切。而看完这三集之后,其实对于网络剧中的剧情可以与从事SEOer的相提并论,所以看完这部短片之后感悟很深,因为我们做SEOer的如果有短片中主人公的精神那将来会有多么的成功啊。

笔者挺佩服《大淘宝》的作者丁一琪,她不但有自己的梦想而且还敢作敢当,也有很大的人格魅力,把剧中的人物打造的生龙活虎并且附和着现代淘宝卖家的风格。笔者在想如果我们做SEO的人也想剧中的一样那工作起来是不是很悲催?但如果我们不这样做那怎么会有明天?怎么会有未来?也许有很多同笔者一样的SEO新人,有的经过培训有的没有经过培训只是了解过SEO,做了这份工作之后一心只想学习好SEO技术然后自己将来开业务,而剧中的主人公不是这么想的,他被她甩了之后,然后在门口拾到了马云的书籍,最后发奋图强为了工作为了生活奋斗了起来,得到了很美好的一切。可能,可能这是一个励志网络剧吧,对我们做SEO的人有很大的励志作用。

一、seoer要坚持做好每一天的工作内容

相信很多刚接触这份工作的朋友都会有一些失落和无奈,随着seo的发展很多都是IT行业毕业的人去找这份工作,很多人也都是抱着若有若无的状态去面试这份工作,如果成功则上岗不成功则在继续,而很多成功之后在以后所面对的工作都是写写网站内容发发网站外链等相关工作,然后会在内心里产生一种隔绝的厌恶感,笔者刚开始也是这样的包括同事们。

笔者想说的是这是一种正常的现象,是SEO的基础技术。而短片里所讲的则是开完淘宝店碰到卖不出去或卖出去给差评或信誉没有其他竞争对手的高,如果他们不去坚持不去努力根本不可能让别人主动去买他们的东西。所以笔者的希望刚开始入门的seoer要坚持做好每一天的工作内容,让自己把基础学扎实,这样才会面对更多的工作任务。

二、Seoer要不断的去学习技术和挖掘新知识

短片中的主人公也是一名初学者,没有任何的经验更别提接触过淘宝,当他了解了淘宝之后并确定这个行业可以赚到金钱,所以不顾一切的每天去看马云的书,去学习新的知识,最后在女朋友的伤害下让他从此下定决心要搞好淘宝,可能这种伤害并没有彻底的打败他,而是转化为了正能量,笔者很佩服他。

可能看到这篇文章的都是从事SEO行业的,笔者要告诉大家seo的知识是无限而宽广的,在工作的过程中要不断的去学习新的知识,不断的去挖掘新的的知识,让自己彻底的沉醉在SEO技术中,而且要学会灵活和运用。

以上则是笔者从《大淘宝》网络剧中得到的深刻感悟,笔者也很感谢这部短片让我学会了贵在坚持的道理,笔者相信自己和广大新手将来会越来越好的,谢谢。

本文为原创手稿,由黄忠原创,转载请注明出处!谢谢!文章地址:http://www.niubang.cn 整理发布。

Copyright 2006-2012 dw.net.cn 达网网络技术有限公司 版权所有
公司地址:宁波市大梁街118号世纪广场B座19楼1902室 [地图] 邮编:315000
中文域名:达网.cn 公司微博:weibo.com/dwnetwork 信产部备案号: 浙ICP备10205343号-8
软件开发, 行业软件, 网站建设, 网站托管, 服务器技术  网站地图 RSS订阅