我想知道这样的事情有什么问题(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注入相关推荐

  1. sql server存储过程中解决单引号的问题

    一:目的想在sql中插入''号,例如:select count(*)from user where name='tom'        a)使用转义字符:select char(39)或select ...

  2. sql 查询列 进行 拼接 单引号 逗号_xml path excel

    方法一: SELECT[id] = stuff((SELECT distinct',''' + user.id + ''''FROMt_user userWHERE 1=1FOR xml path ( ...

  3. Aggregate 为字符串数组元素添加单引号 可用于SQL数据查询 in

    string condition = string.Empty; int[] a = { 12, 13, 14, 15 }; condition = a.Aggregate(condition, (c ...

  4. sql 单引号_三种数据库的 SQL 注入详解

    SQL 注入原理 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用 ...

  5. mysql注入单引号和双引号的区别_mysql单引号和双引号的用法

    表名,列名最好用`(esc下面那个,不用`会出错) 这就要从双引号和单引号的作用讲起: 双引号里面的字段会经过编译器解释然后再当作HTML代码输出,但是单引号里面的不需要解释,直接输出.例如: $ab ...

  6. sql中插入带有单引号的数据

    字符串数据是用单引号包在外面的,如果插入的数据中包含单引号,就需要再做处理 可以将单引号替换成两个单引号,在sql中连续两个单引号就表示一个单引号字符 举例如下: insert into A(a1,a ...

  7. python引号嵌套_【python】sql语句插入中内容同时包含单引号和双引号的解决办法...

    在python中调用MySQLdb模块插入数据信息,假设待输入信息data为: Hello'World"! 其中同时包含了单引号和双引号 一般插入语句为 sql = "insert ...

  8. c语言中常量单双引号,C语言常量中字元与字串 除了单引号与双引号的区别外,还有什么不同。...

    C语言常量中字元与字串 除了单引号与双引号的区别外,还有什么不同.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C语言 ...

  9. php中的单引号与双引号详解

    一.引号定义字符串 在Php中,通常一个字符串被定义在一对引号中,如: 'I am a string in single quotes' "I am a string in double q ...

最新文章

  1. 哪些人适合学习web前端?
  2. 如何零门槛搭建实时音视频通信平台
  3. [你必须知道的.NET]第十一回:参数之惑---传递的艺术(上)
  4. 数据的标准化和标准化方法
  5. Memtest86-7.1内存测试工具
  6. nginx 获取真实ip
  7. EL表达式取 Map、 List和数组的值
  8. 人工智能实战小程序之语音_前端开发
  9. kubernetes 集群部署
  10. 密码学专题 openssl编译和安装
  11. 作者:罗圣美,男,中兴通讯股份有限公司首席架构师。
  12. JS 设计模式 一(接口)
  13. 4月30日火车票今日开售,多个线路“一秒没”
  14. 乱码问题_win7 64位系统出现字体乱码的问题
  15. 【雷达通信】基于matlab Omiga-K算法SAR回波生成和成像【含Matlab源码 1184期】
  16. uni实现前端分页功能
  17. Soul app产品分析报告
  18. 一芯FC1179主控扩容U盘量产修复教程(图文详解)
  19. 在Android Studio中的混淆debug与release
  20. 李在福羽毛球教学经典视频汇总31集

热门文章

  1. 命令行编译_新鲜货:C++ Build Insights告诉你为啥你的代码编译这么慢
  2. buffer 与cache 的区别
  3. cudart64_101.dll not found
  4. 水下图像处理算法Sea-thru
  5. pytorch CUDA out of memor
  6. dlib android
  7. 图像质量损失函数SSIM Loss的原理详解和代码具体实现
  8. python twisted安装
  9. python opencv 旋转图片
  10. windows msys编译64位x264和ffmpeg