失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > PHP代码网站如何防范SQL注入漏洞攻击建议分享【PHP】

PHP代码网站如何防范SQL注入漏洞攻击建议分享【PHP】

时间:2019-12-21 20:37:30

相关推荐

PHP代码网站如何防范SQL注入漏洞攻击建议分享【PHP】

后端开发|php教程

SQL注入漏洞

后端开发-php教程

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

什么是SQL注入(SQL Injection)?

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

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

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

在线管理签收数据源码,ubuntu命令连接无线,爬虫语法教程视频,php怎么调用php语言包,寿光seo外包lzw

<?

$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()可以将代码中特殊字符过滤掉,如引号等。如下例:

网页游戏网站源码,vscode安装c语言图形库,pyqt4 ubuntu,idea安转tomcat,c#+sqlite,上时空网页设计,买网站服务器,wordpress 随机名言插件,主要的前端框架,吸管里爬虫,php订单管理,怎样学习seo,springboot持久层配置,动易视频网站管理系统,网页点击 弹出窗口,百度贴吧手机模板,微信建站后台,用户 管理员后台登录 页面css模板,jsp网站后台管理系统源码,网站程序上传服务器lzw

<?

$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()函数可以取到进一步保护的作用。我们进一步演化刚才的代码就得到了下面的代码:

学生个人信息php源码,ubuntu终端字体缩小,网络爬虫周边技术,php国内外php国内发,小游戏seolzw

<?

//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,要注意及时打上官方的补丁或升级到新的版本。如果有讲得不对的地方或不理解的请在评论区留言。

如果觉得《PHP代码网站如何防范SQL注入漏洞攻击建议分享【PHP】》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。