php sql注入 替换,通过替换单引号来防止SQL注入
我想知道这样的事情有什么问题(PHP)
这个想法。
很久以前就证明它存在缺陷。
首先,这段代码确实改变了数据。这是抽象思考的好方法,但它会在现实生活中使你的应用程序崩溃。事实上,这是不可接受的行为。但是,您可以转义引号而不是替换它们。
其次,您(就像大多数PHP人员一样)认为替换某些字符会使您的数据安全。虽然不是。每个关心在注射保护领域重新发明轮子的PHP用户总是假设只有字符串被添加到查询中。他们从未明确地意识到它,也没想象SQL查询中存在任何其他部分。虽然这样的替换对于任何其他SQL文字都像鸡一样无害。而且你的功能的名字肯定是我的话语的证据
说,你有这样的代码
$limit = formatsql($_POST["limit"]);
$query = "SELECT id FROM utenti LIMIT $limit";
欢迎任何脚本小子玩你的数据库。
此外,您的推理中还有一个术语“用户输入”,这是二阶注入的确定标志。
更进一步,让我们观察两种应用程序:某种愚蠢的主页脚本和相对较大的Web应用程序。虽然你的代码完全适合前者,但后者的规则会发生变化。有时我们可以拥有代码的这两部分
$username = formatsql($_POST["username"]);
$password = formatsql($_POST["password"]);
和
$query = "SELECT id FROM utenti WHERE user='$username' AND password='$password'";
彼此戏剧性地分开。在这里,我们可以陷入许多麻烦,例如双重逃逸,错误逃避,完全没有逃脱。
这就是很久以前手动转义被认为是不良做法的原因。
相反,必须使用准备好的陈述,因为保证
完整格式应用而不是愚蠢的“转义”或“替换”
不同的格式应用于不同的数据类型。
格式化应用正确必须在哪里 - 不早或不晚。
正确应用无条件格式,独立于开发人员的意愿或空气。
这就是为什么准备好的陈述已经很久以前认为唯一正确的方法。
php sql注入 替换,通过替换单引号来防止SQL注入相关推荐
- sql server存储过程中解决单引号的问题
一:目的想在sql中插入''号,例如:select count(*)from user where name='tom' a)使用转义字符:select char(39)或select ...
- sql 查询列 进行 拼接 单引号 逗号_xml path excel
方法一: SELECT[id] = stuff((SELECT distinct',''' + user.id + ''''FROMt_user userWHERE 1=1FOR xml path ( ...
- Aggregate 为字符串数组元素添加单引号 可用于SQL数据查询 in
string condition = string.Empty; int[] a = { 12, 13, 14, 15 }; condition = a.Aggregate(condition, (c ...
- sql 单引号_三种数据库的 SQL 注入详解
SQL 注入原理 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用 ...
- mysql注入单引号和双引号的区别_mysql单引号和双引号的用法
表名,列名最好用`(esc下面那个,不用`会出错) 这就要从双引号和单引号的作用讲起: 双引号里面的字段会经过编译器解释然后再当作HTML代码输出,但是单引号里面的不需要解释,直接输出.例如: $ab ...
- sql中插入带有单引号的数据
字符串数据是用单引号包在外面的,如果插入的数据中包含单引号,就需要再做处理 可以将单引号替换成两个单引号,在sql中连续两个单引号就表示一个单引号字符 举例如下: insert into A(a1,a ...
- python引号嵌套_【python】sql语句插入中内容同时包含单引号和双引号的解决办法...
在python中调用MySQLdb模块插入数据信息,假设待输入信息data为: Hello'World"! 其中同时包含了单引号和双引号 一般插入语句为 sql = "insert ...
- c语言中常量单双引号,C语言常量中字元与字串 除了单引号与双引号的区别外,还有什么不同。...
C语言常量中字元与字串 除了单引号与双引号的区别外,还有什么不同.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C语言 ...
- php中的单引号与双引号详解
一.引号定义字符串 在Php中,通常一个字符串被定义在一对引号中,如: 'I am a string in single quotes' "I am a string in double q ...
最新文章
- 哪些人适合学习web前端?
- 如何零门槛搭建实时音视频通信平台
- [你必须知道的.NET]第十一回:参数之惑---传递的艺术(上)
- 数据的标准化和标准化方法
- Memtest86-7.1内存测试工具
- nginx 获取真实ip
- EL表达式取 Map、 List和数组的值
- 人工智能实战小程序之语音_前端开发
- kubernetes 集群部署
- 密码学专题 openssl编译和安装
- 作者:罗圣美,男,中兴通讯股份有限公司首席架构师。
- JS 设计模式 一(接口)
- 4月30日火车票今日开售,多个线路“一秒没”
- 乱码问题_win7 64位系统出现字体乱码的问题
- 【雷达通信】基于matlab Omiga-K算法SAR回波生成和成像【含Matlab源码 1184期】
- uni实现前端分页功能
- Soul app产品分析报告
- 一芯FC1179主控扩容U盘量产修复教程(图文详解)
- 在Android Studio中的混淆debug与release
- 李在福羽毛球教学经典视频汇总31集