Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如果不使用sql,为什么要转义字符串?

如果不使用sql,为什么要转义字符串?
EN

Stack Overflow用户
提问于 2014-08-28 03:32:23
回答 3查看 64关注 0票数 1

上下文

学习。

问题

当我们使用sql时,需要转义用户输入,或者更好地使用准备好的语句来避免注入。

这种需求是否是SQL语言中的缺陷?

假设我有一个http服务器,并将用户输入直接放在二进制文件中,有可能注入吗?

当我需要再读一遍的时候,翻开、翻开、关闭和完成工作,不是吗?不过,我猜还是不会受到攻击的(我不想在客户端浏览器中使用消毒来避免xss,只需要注入)。

最后,sql也将字符串放入文件中。

那有什么区别呢?sql语言弱吗?我的方法有危险吗?为什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-28 03:36:37

如果您构建了SQL命令字符串,则应该始终转义来自用户输入的SQL命令字符串的部分。

否则,使用准备好的语句。

它实际上不是SQL的一个弱点,而是大多数图灵完整解释语言的一个属性。代码注入可以在-and之外发生(例如,在shell脚本、-and代码等中)

还可以阅读Quine程序 (以及谷歌在编程语言中的反引文和准引文)。

票数 0
EN

Stack Overflow用户

发布于 2014-08-28 03:43:25

这在很大程度上取决于您如何解释用户输入。如果您只是在稍后阶段存储用户输入以准确地中继,那么您可能不会介意,但是在您的示例中,如果您读取了输出,然后将其输出到一个网页上,那么您将打开自己以接受来自用户的恶意输入。假设您从输入字段中读取,然后将其直接输出到html文件中,并提供给它,比方说作为一个<p>user text</p>。如果恶意用户知道您的布局,他们很容易在其中插入一些javascript。更糟糕的是,如果您正在使用此数据生成(例如) .php文件,恶意用户可能会手工完成将在您的服务器上运行的东西。任何有一层解释的地方,你都有注射的危险。

票数 1
EN

Stack Overflow用户

发布于 2014-08-28 05:07:39

如果用户输入被执行或者是正在执行的东西的一部分(sql,html,shell脚本.)你应该永远逃避它。如果你只是在读价值,就没有理由逃避它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25547777

复制
相关文章
python r不转义变量
普通字符串常量 含有转义字符,会按照转义字符的意义输出,如下: text="1 E:/Code/PycharmProjects/QtDemo/ToolsList\__pycache__\start.cpython-36.pyc \r\n" print(text) 输出如下: 1 E:/Code/PycharmProjects/QtDemo/ToolsList__pycache__\start.cpython-36.pyc <空行> raw strings(原始字字符串) 在python中使用
py3study
2020/01/09
4K0
js 字符串转义 与取消转义
转义序列 字符 \b 退格(BS 或 ASCII 符号 0x08 (8)) \f 换页(FF 或 ASCII 符号 0x0C (12)) \n 换行(LF 或 ASCII 符号 0x0A (10)) \r 回车(CR 或 ASCII 符号 0x0D (13)) \t 水平制表符(HT 或 ASCII 符号 0x09 (9)) \' 单引号 \" 双引号 \& &(and)符号 \\ 反斜杠 es6中使用字符串模板  如何含有  \r  会被换行 这个时候如果不想换行可以使用 String.raw`a b
拿我格子衫来
2022/01/24
12.7K0
js 字符串转义 与取消转义
python字符串转义字符_python 转义
上图中因为python不知到如何处理一对单引号之后的内容,不能识别第三个单引号。(默认都是以一对单引号或双引号来表示字符串从结束到开始。)
全栈程序员站长
2022/11/01
7.3K0
python字符串转义字符_python 转义
Html字符串转义
compile 'org.apache.commons:commons-text:1.8'
JQ实验室
2022/02/10
2.7K0
SQL查询语句为什么要加上with(nolock)?
今天在查询数据库的时候,向开发要了一条查询语句,发现在语句表的后面有with(nolock),不知道这是干啥用的,之前没遇到过,所以就差了下:
软测小生
2019/07/05
5.6K0
SQL查询语句为什么要加上with(nolock)?
python 字符串 转义_python转义字符怎么用
python的字符串控制,有时候自动转义会带来很多问题,比如文件路径因为转义变得有异常,json字符串塞进json串中之后,自动的对引号加转义斜杠等,整理一下踩的一些坑。
全栈程序员站长
2022/11/17
3.9K0
PHP json_encode不转义中文
static public function test6() { //在数据库随便拿一条有中文的数据 $user = DB::table('users')->select('name','company')->where('id', '=', 3)->first(); //第一种序列化方式,不加参数,中文会被转化为unicode $json_user1 = json_encode($user); var_dump($json_
用户7657330
2021/12/07
2.4K0
mybatis字符串转义问题
如上代码所示,在执行查询操作时,为了能够与前端联动进行排序,直接在SQL参数中传递排序字段和排序规则。 但是,在调试时偶然发现,当传递的“orderBy”值为不存在的字段时,竟然不会报错!!! 经过进一步调试发现,实际上并不会按照预期的排序规则返回数据列表!!!
编程随笔
2019/09/11
2.5K0
mybatis字符串转义问题
为什么不推荐使用PHPicker
iOS 14 中系统新增了一个图片选择器 PHPicker,官方建议使用 PHPicker 来替代原有的 API 进行图片选择,下面我们来看看 PHPicker 的优点:
ios-lan
2020/10/23
2.6K0
为什么不推荐使用PHPicker
MySQL 中 SQL 语句为什么不走索引?
一条 SQL 语句的执行,主要经过两个重要的组件:1. SQL 命令解析器;2. 代价分析器;代价分析器没有在这个图中展示出来;这也是 SQL 未命中索引的关键所在。
前Thoughtworks-杨焱
2021/12/07
1.4K0
MySQL 中 SQL 语句为什么不走索引?
MySQL为什么不推荐使用in
当然,每个具体的情况都是不同的,所以在选择查询操作符时,我们需要根据具体的需求和数据情况进行评估和测试。在优化查询性能时,我们可以使用MySQL的查询分析工具来帮助我们理解查询的执行计划和性能瓶颈,从而做出更好的决策。
程序员朱永胜
2023/09/07
3960
017:为什么不建议在循环中使用“+”拼接字符串
由于字符串对象是不可变的,所以每次循环都会对操作符左右两边的字符串进行拷贝,并生成一个新的字符串对象。如果循环n次,则这个过程需要n的平方级的时间;并且在这个过程中还创建了很多短命的中间对象。
阿杜
2019/03/12
1.3K0
017:为什么不建议在循环中使用“+”拼接字符串
json_encode不转义中文和斜杠
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说json_encode不转义中文和斜杠,希望能够帮助大家进步!!!
Java架构师必看
2022/08/22
2.3K0
为什么 MySQL 不推荐使用 join?
作者:李博 , 链接: https://cnblogs.com/liboware/p/12740901.html
Java小咖秀
2021/04/07
2.2K0
为什么 MySQL 不推荐使用 join?
redis为什么不直接使用C字符串,而要自定义简单动态字符串?
Redis (一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。)没有直接使用 C 语言传统的字符串表示redis中的字符串,而是使用了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型, 并将 SDS 用作 Redis 的默认字符串。
编程珠玑
2020/05/22
1.5K0
为什么不建议使用goto语句
现在老师上课基本上不怎么讲goto语句,很多文章也提到不建议使用,那到底是为什么呢?
用户6755376
2020/04/01
2.4K0
为什么不推荐使用存储过程?
之所以有这个题目,我既不是故意吸引眼球,也不想在本文对存储过程进行教科书般论述。最近项目中遇到的存储过程问题,让我想起了去年在武汉出差时一位同事的发问:
芋道源码
2019/11/29
2.1K0
到底为什么不建议使用SELECT * ?
“不要使用SELECT *”几乎已经成为了使用MySQL的一条金科玉律,就连《阿里Java开发手册》也明确表示不得使用*作为查询的字段列表,更是让这条规则拥有了权威的加持。
蝉沐风
2022/08/22
8330
到底为什么不建议使用SELECT * ?
为什么不建议你使用SELECT *
“不要使用SELECT *”几乎已经成为了MySQL使用的一条金科玉律,就连《阿里Java开发手册》也明确表示不得使用*作为查询的字段列表,更是让这条规则拥有了权威的加持。
蝉沐风
2022/08/05
2.6K2
为什么不建议你使用SELECT *
Python字符串的转义字符
字符串的转义字符 什么是转义字符 字符要转成其他含义的功能,所以我们叫他转义字符 \ + 字符 Python中的转义字符 符号 说明 \n 换行,一般用于末尾,strip对其也有效 \t 横向制表符(可以认为是一个间隔符) \v 纵向制表符(会有一个男性符号) \a 响铃 \b 退格符,将光标前移,覆盖(删除前一个) \r 回车 \f 翻页(几乎用不到,会出现一个女性符号) \' 转义字符串中的单引号 \'' 转义字符中的双引号 \\ 转义斜杠 转义无效符 在python中 在字符串前加 r 来将当
Zkeq
2022/05/18
1.7K0

相似问题

防止sql注入--如果使用准备好的语句,为什么要转义输入?

31

不转义转义字符串?

42

如果语句不运行,为什么要这样做?

14

要转义的字符串中的转义字符

513

为什么repr()要添加转义字符?

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档