php 英文引号转义,如何用引号转义php exec()命令
我在Linux上使用Exiv2命令行工具来编辑图像元数据,如下所示:
exiv2 -M"set Iptc.Application2.Caption String This is my caption....." modify IMG.jpg
我想使用用户提供的标题从PHP执行此操作.如果用户不输入任何特殊字符,这将起作用:
exec('/usr/local/bin/exiv2 -M"set Iptc.Application2.Caption String '.$caption.'" modify IMG.jpg');
我需要允许用户使用特殊字符,例如单引号和双引号.我想使用escapeshellcmd()来防止恶意数据.我如何正确地转义命令和参数,以便其起作用?我尝试了很多选择,但我做对了.
解决方法:
是的,这是一个难题,因为该命令使用的是非标准的shell参数(例如它自己的小元语言). ImageMagick具有相同的问题.
如果仅在双引号引起来的字符串中使用escapeshellarg(),它将变为无用的. escapeshellcmd()会转义所有特殊字符,并且可以安全地用于双引号字符串中.因此,您需要对单引号进行硬编码,以使其正常工作.
exec('/usr/local/bin/exiv2 -M"set Iptc.Application2.Caption String \'' . escapeshellcmd($caption) . '\'" modify IMG.jpg');
escapeshellarg()在单引号字符串中不起作用的原因是:
# for this input:
The smith's "; rm -rf *; echo "went to town
# after escapeshellarg()
'The smith\'s "; rm -rf *; echo "went to town'
# Works fine if left as a top-level argument
/usr/bin/command 'The smith\'s "; rm -rf *; echo "went to town'
# BUT if put in a double-quoted string:
/usr/bin/command "subcommand1 'The smith\'s "; rm -rf *; echo "went to town'"
# it is broken into 3 shell commands:
/usr/bin/command "something and 'The smith\'s ";
rm -rf *;
echo "went to town'"
# bad day...
标签:escaping,exec,php,exiv2
来源: https://codeday.me/bug/20191024/1920472.html
php 英文引号转义,如何用引号转义php exec()命令相关推荐
- quot转双引号 php,js把 quot 转义双引号
" \\\\ 退格 走纸换行 回车 换行 横向跳格 单引号 双引号 反斜杠 实体编号 < > & " © × ÷...... 共 ...
- 双引号内的单引号转义
多引号内的单引号转义 '-->单引号转义 "-->双引号 thtml+="<input type='text' autocomplete='off' value= ...
- 过滤英文双引号替换为中文引号
输入框输入的文本通常会出现英文引号,从而在使用的时候会出现异常,为避免这些异常,我们可以将英文引号替换为中文引号,如下: var str = "你好\"bug,我是从\" ...
- WPS里如何去掉英文引号自动转换为中文引号?
我使用的是wps2006,记录代码的时候,经常被wps自作聪明地把英文单引号,双引号自动转换为中文的单引号,双引号. 去掉这个功能的方法:左上角wps菜单-->选项-->编辑-->自 ...
- WPS文字 | Word-查找与替换功能剖析之“如何把英文引号替换为中文引号”
前言 先说明一下, WPS和OFFICE中的word文档,存在一定不同:对于同样的查找与替换设置,得到的结果不相同. 举个例子,假如原文为: 在WPS下:得出来的结果有两种,有时候会把英文引号里的内容 ...
- python中字符串单引号、双引号、三引号_Python:字符串单引号(‘)、双引号(“)、三单引号(”’)和三双引号(“””)的区别...
实际上在Python中'...'和"..."是完全一样的,但不能出现'..."和"...'这种情况. 而将其混合使用会有很多意想不到的效果: 具体规则如下: 若 ...
- python创建包含双引号的字符串代码_python 字符串组成MySql 命令时,字符串含有单引号或者双引号导致出错解决办法...
引用自:https://blog.csdn.net/zhaoya_huangqing/article/details/48036839 一.在组成SQL语句并发送命令时完全按照Python中的样式去传 ...
- js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和php很像:单引号快,双引号可转义字符,双引号可解析变量)...
js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和php很像:单引号快,双引号可转义字符,双引号可解析变量) 一.总结 1.html中属性规范是 ...
- PYTHON 双引号 单引号 多引号区别
先说1双引号与3个双引号的区别,双引号所表示的字符串通常要写成一行 如: s1 = "hello,world" 如果要写成多行,那么就要使用/ ("连行符")吧 ...
最新文章
- 腾讯林衍凯:图神经网络,考虑「拓扑信息」会怎样?
- TCP客户机-服务器
- 简述angular中constant和$filter的用法
- java 异步调用webapi_Async Await异步调用WebApi
- Maven使用创建项目(一)
- eslint的安装与使用
- 10个JavaScript代码片段,帮助你成为更好的开发者
- 使用组策略禁止域用户运行特定软件名称的程序
- 慎用 apt-get autoremove !
- Unity3D基础12:碰撞体
- 【转】 Android xml中 @和?区别,style和attr小结
- Python爬虫入门教程 29-100 手机APP数据抓取 pyspider
- 如何利用 Flutter 实现炫酷的 3D 卡片和帅气的 360° 展示效果
- matlab语法归纳
- 玩真的了!深度解读拒不履行信息网络安全管理义务将入罪
- doxygen的特定命令
- 测向交叉定位matlab,测向交叉定位
- leetcode剑指offe刷题-第一题-用两个栈实现队列
- 水果之王之猕猴桃-系列三(猕猴桃的功能和禁忌)
- chmod +x 与chmod 777 的超详细解说
热门文章
- 大数据workshop:《在线用户行为分析:基于流式计算的数据处理及应用》之《实时数据分析:海量日志数据多维透视》篇...
- phalcon: Profiling分析 profilter / Plugin结合,dispatcher调度控制器 监听sql执行日志
- C++ static、const对象声明与定义 问题来源?
- CSS(一)sytle
- Rancher Kubernetes Engine(RKE)正式发布:闪电般的Kubernetes安装部署体验
- 实现WinForm窗体的美化(借助第三方控件)
- 【MySql】MySql存储,游标,循环的简单使用
- linux下svn的常用代码【转】
- 5.7 Components — Sending Actions From Components to Your Application
- 数据链路层(2层)数据帧结构