`

php SQL注入问题

    博客分类:
  • PHP
 
阅读更多
在开发网站的时候,出于安全考虑,需要过滤从页面传递过来的字符。通常,用户可以通过以下接口调用数据库的内容:URL地址栏、登陆界面、留言板、搜索框等。这往往会带来一些不必要的风险,比如说数据遭到泄露。
这次解决SQL注入问题,是查找之前的controller文件中的SQL注入问题,修补漏洞很重要,预防漏洞的产生也同样重要,在使用SQL语句对数据库进行增删改查操作的时候,要考虑到SQL注入问题的出现。
首先了解一下SQL注入的步骤:
(1)寻找注入点(如:登录界面、留言板等);
(2)用户自己构造SQL语句;
(3)将sql语句发送给数据库管理系统(DBMS);
(4)DBMS接收请求,并将该请求解释成机器代码指令,执行必要的存取操作;
(5)DBMS接受返回的结果,并处理,返回给用户;
例如:
登录界面的表单数据$name(用户名) 、$possword(密码)都是通过前端页面submit 把表单数据提交到后台,然后在后台PHP文件中通过执行SQL语句对所需数据进行查询.
$sql="select * from users where username='$name' and password=ma5('.$possword.') ";


直接将用户提交过来的数据(用户名和密码)直接拿去执行(没有实现进行特殊字符过滤),如果用户名和密码都匹配成功的话,将跳转到登录后的界面,不成功,则给出错误提示信息。
正常情况下,$name='user',$possword='123456',执行的SQL语句为:
$sql="select * from users where username='user' and password=md5('123456') ";

如果账号密码正确,那么我们会正常的登录,假如账号密码错误,会给出错误提示。但是在有SQL注入漏洞的网站来说,只要构造个特殊的“字符串”,照样能够成功登录。比如:在用户名输入框中输入:or 1=1#,密码随便输入,那么这时SQL语句为:
$sql="select * from users where username='or 1=1#' and password=md5('12345asdada6') ";

“#”在mysql中是注释符,这样#号后面的内容将被mysql视为注释内容,这样就不会去执行了。SQL语句在这时变成了
$sql = select * from users where username='' or 1=1#' and password=md5('12345asdada6')";
//即为$sql = select * from users where username='' or 1=1;

这时判断1=1 肯定为true,那么执行者就可以随意获取自己想要的数据了,这就是SQL注入漏洞的一个表现。
分享到:
评论

相关推荐

    php168sql注入漏洞

    通过上述分析可以看出,PHP168中的SQL注入漏洞是一个典型的Web应用安全问题,其背后反映了开发者对于用户输入验证不足的问题。为了防止类似漏洞的发生,开发人员应该加强输入验证和过滤机制的设计,同时定期进行安全...

    PHP+Mysql 带SQL注入源码 下载

    这个"PHP+Mysql 带SQL注入源码 下载"的主题涉及到一个常见的安全问题——SQL注入,以及如何处理和预防这种情况。下面将详细讨论SQL注入、PHP与MySQL的结合使用,以及如何防范SQL注入。 **SQL注入** SQL注入是一种...

    PHPSQL注入漏洞学习

    6. 使用ORM(对象关系映射)框架:如Laravel的Eloquent,自动处理SQL注入问题。 7. 定期更新和打补丁:保持PHP和数据库系统的最新版本,修复已知的安全漏洞。 总结,PHP SQL注入漏洞是开发过程中必须重视的问题。...

    sql注入讲解ppt.pptx

    SQL 注入基础知识点总结 SQL 注入是指 web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法...

    SQL 注入天书.pdf

    SQL注入是一种常见的网络安全漏洞,发生在应用程序使用用户输入的SQL代码直接构建数据库查询时。当攻击者能够通过输入恶意SQL语句来控制或篡改数据库查询,他们就能获取敏感信息、修改数据甚至完全控制系统。《SQL...

    SQL注入全面讲解技术文档

    PHP应用同样面临SQL注入问题,开发者应使用预处理语句(如PDO或MySQLi的prepare/execute)来防止注入,并避免使用`eval()`等危险函数。 5. 检测和防御SQL注入和跨站脚本攻击: - 使用自动化工具进行扫描,如...

    CmsEasy crossall_act.php SQL注入漏洞.md

    根据提供的文件信息,CmsEasy的crossall_act.php文件中存在一个SQL注入漏洞,这是在IT行业中常见的安全漏洞类型。SQL注入攻击者可以通过这个漏洞在数据库中执行恶意的SQL语句,从而对网站数据库进行非授权的操作。 ...

    360提供的php防sql注入代码修改类

    总的来说,"360提供的php防sql注入代码修改类"是一个实用的工具,旨在帮助开发者提高PHP应用的安全性,减少SQL注入和HTTP跨站攻击的风险。通过理解并应用这个类,我们可以更好地保护我们的网站和用户数据。在实践中...

    web安全性测试之sql注入入门篇

    PHP SQL 注入是指在 PHP 应用程序中使用的 SQL 注入攻击。PHP SQL 注入可以分为两种类型: * PHP+MySQL:使用 MySQL 数据库的 PHP 应用程序 * PHP+PostgreSQL:使用 PostgreSQL 数据库的 PHP 应用程序 SQL 注入的...

    metinfo 后台sql注入1

    本文将深入探讨MetInfo 6.1.0版本中的一个SQL注入漏洞,该漏洞存在于app/system/feedback/admin/feedback_admin.class.php文件的第620行。 SQL注入是一种常见的网络安全威胁,攻击者通过输入恶意的SQL代码,欺骗...

    防止sql注入工具类l

    防止SQL注入是每个Web开发者必须关注的重要问题。在这个主题中,我们将深入探讨“防止SQL注入工具类”的相关知识点,以及如何在实际开发中有效地应用这些工具。 首先,我们需要理解SQL注入的基本原理。当应用程序...

    寻找sql注入的网站的方法(必看)

    方法一:利用google高级搜索,比如搜索url如.asp?... 您可能感兴趣的文章:Java面试题解析之判断以及防止SQL注入SQL注入原理与解决方法代码示例通过ibatis解决sql注入问题Win2003服务器防SQL注入神器–D盾_IIS防火墙

    JavaScript过滤SQL注入字符

    JavaScript过滤SQL注入字符 在Web开发中,SQL注入是一种常见的安全威胁,攻击者可以通过输入恶意的SQL代码来操控数据库。JavaScript作为客户端脚本语言,虽然主要负责与用户交互,但也可以在防止SQL注入方面发挥...

    SQL注入漏洞演示源代码

    3. **安全的编码实践**:对比展示如何通过预编译的SQL语句(如PHP的PDO或MySQLi的预处理语句)、参数化查询或者使用存储过程来防止SQL注入。 4. **漏洞检测与修复**:可能包含用于检查应用程序是否存在SQL注入漏洞的...

    PHP中全面阻止SQL注入式攻击

    ### PHP中全面阻止SQL注入式攻击 在当前的网络环境中,Web应用程序的安全性变得尤为重要,而其中SQL注入攻击是常见的安全威胁之一。SQL注入是指攻击者通过将恶意SQL代码插入到应用程序的输入字段中,从而控制数据库...

    PHP与SQL注入渗透方法.doc

    ### SQL注入渗透方法详解:PHP环境下的攻防策略 #### SQL注入原理与危害 SQL注入是一种常见的网络安全漏洞,尤其在Web应用中极为普遍。当Web应用程序未能正确验证和过滤用户输入,恶意用户便能通过输入特定的SQL...

    详细的sql注入教程

    标题和描述中提到的知识点是关于SQL注入的教程和演示文档,主要涵盖了SQL注入的基本概念、几种常用的SQL注入工具(包括啊D注入工具、NBSI注入工具、Domain注入工具)及其具体操作流程,以及PHP注入利器ZBSI。...

Global site tag (gtag.js) - Google Analytics