php prepare
详见 https://stackoverflow.com/questions/134099/are-pdo-prepared-statements-sufficient-to-prevent-sql-injection/12202218#12202218
php pdo prepare真的能防止sql injection吗, 这里
php使用pdo 连接mysql , 会使用prepare预处理, 也就是将 除去具体查询值的SQL语句先送给mysql, 然后再把值发送给mysql, 能够避免sql注入
pdo 有一个属性 PDO::ATTR_EMULATE_PREPARES, 为true, 即为php本地 模拟这个prepare, 其时什么也没做,execute时把完整sql 发送给sql, 这时如果是gbk,很容易SQL注入
为false时,先把预处理发送给mysql, execute时, 再把值发送给mysql
当 PDO::ATTR_EMULATE_PREPARES 为 true时

当PDO::ATTR_EMULATE_PREPARES 为 false时
先发送 select * from table_uid_1 where k = ?

再发送103489 这个查询值

如果加上limit
public function list() {
$sql = "select * from " . $this->table . "_1 where k = :id limit :limit";
$result = $this->pdo->prepare($sql);
$id = ;
$result->bindParam(':id', $id);
$result->bindValue(':limit', );
$result->execute();
$list = $result->fetchAll(\PDO::FETCH_ASSOC);
return $list;
}
当 PDO::ATTR_EMULATE_PREPARES 为 true时, sql报错

执行的语句是 select * from table_uid_1 where k = '103489' limit '0'
解决方法是 bindValue时, 标注下类型, 即
public function list() {
$sql = "select * from " . $this->table . "_1 where k = :id limit :limit";
$result = $this->pdo->prepare($sql);
$id = ;
$result->bindParam(':id', $id);
$result->bindValue(':limit', , \PDO::PARAM_INT);
$result->execute();
$list = $result->fetchAll(\PDO::FETCH_ASSOC);
return $list;
}
或者 设置 PDO::ATTR_EMULATE_PREPARES 为 false

传递 值

tcpdump抓取数据
tcpdump tcp port 3318 -w /tmp/target.ca
wireshark 分析tcpdump出来的包 分析
过滤条件:
在wireshark的过滤条件里输入tcp.port==3306 && mysql,然后回车,这样就能只显示mysql类型的包。

php prepare的更多相关文章
- Looper.prepare()和Looper.loop()
什么时候需要 Looper Looper用于封装了android线程中的消息循环,默认情况下一个线程是不存在消息循环(message loop)的,需要调用Looper.prepare()来给线程创建 ...
- java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)
此错误是由于版本造成的,如果使用mybatis3.4版本以上,配置拦截器规则应增加Intger @Intercepts({ @Signature( type= StatementHandler.cla ...
- php+mysql预查询prepare 与普通查询的性能对比
prepare可以解决大访问量的网站给数据库服务器所带来的负载和开销,本文章通过实例向大家介绍预查询prepare与普通查询的性能对比,需要的朋友可以参考一下. 实例代码如下: <?php cl ...
- 在子线程中new Handler报错--Can't create handler inside thread that has not called Looper.prepare()
在子线程中new一个Handler为什么会报以下错误? java.lang.RuntimeException: Can't create handler inside thread that has ...
- PerconaXtraBackup --全备增备prepare restore
Xtrabackup Xtrabackup包含两个主要的工具,即xtrabackup和innobackupex,二者区别如下: • xtrabackup只能备份innodb和xtradb引擎表,而不 ...
- 1117Mysql prepare预处理语句
转自http://www.jb51.net/article/81378.htm 综述:一般用来拼凑SQL然后执行 MySQL 5.1对服务器一方的预制语句提供支持.如果您使用合适的客户端编程界面,则这 ...
- DB2 for Z/os Statement prepare
The PREPARE statement creates an executable SQL statement from a string form of the statement. The c ...
- Android 线程更新UI报错 : Can't create handler inside thread that has not called Looper.prepare()
MainActivity中有一个按钮,绑定了save方法 public void save(View view) { String title = titleText.getText().toStri ...
- Mariadb 10.1 joiner节点加入报错WSREP: Failed to prepare for incremental state transfer
Mariadb 10.1 galera cluster 集群joiner 节点加入集群 会出现这种报错,导致mysql一直点点点,这里我贴出报错.2016年04月19日13:34:58 2016-04 ...
- mysql之预处理语句prepare、execute、deallocate
预制语句的SQL语法基于三个SQL语句: PREPARE stmt_name FROM preparable_stmt; EXECUTE stmt_name [USING @var_name [, @ ...
随机推荐
- 怎么给php下拉框默认选中
比如说一个个人信息的编辑界面,从php界面传来了性别的值是0, 而html上有0 1 两个option 怎么能把0的那个option加上属性selected 用的是模板, 不要用原生的嵌在html中的 ...
- 我读《从Paxos到zookeeper分布式一致性原理与实践》
从年后拿到这本书开始阅读,到准备系统分析师考试之前,终于读完了一遍,对Zookeeper有了一个全面的认识,整本书从理论到应用再到细节的阐述,内容安排从逻辑性和实用性上都是很优秀的,对全面认识Zook ...
- kbmMWtable for XE5 接近尾声
为了支持多平台开发的delphi XE5,kbmmwtable 做了非常大的改动. 目前已经可以在ios 和android 上建立和查询数据表了,但是众说周知,在ios 和android 上 使用Li ...
- Linux设备驱动模型底层架构及组织方式
1.什么是设备驱动模型? 设备驱动模型,说实话这个概念真的不好解释,他是一个比较抽象的概念,我在网上也是没有找到关于设备驱动模型的一个定义,那么今天就我所学.所了解 到的,我对设备驱动模型的一个理解: ...
- Hadoop中Writable类之四
1.定制Writable类型 Hadoop中有一套Writable实现,例如:IntWritable.Text等,但是,有时候可能并不能满足自己的需求,这个时候,就需要自己定制Writable类型. ...
- 20169205实验三 敏捷开发与XP实践
20169205实验三 敏捷开发与XP实践 实验内容及步骤 (一)敏捷开发与XP基本知识 敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 一项实践在XP环境 ...
- CentOS 7.4 shell 不显示当前用户和路径的问题
步骤如下: vim ~/.bash_profile (不用管.bash_profile这个文件有几个,自己新建一个也是可以的) 在最后加上 export PS1='[\u@\h \W]\$' ...
- 查看WEB ADI所对应的包过程函数
SELECT BNEINTERFACESBEO.APPLICATION_ID , BNEINTERFACESBEO.INTERFACE_CODE , BNEINTERFACES ...
- Android-HttpsURLConnectionHelp-工具类
HttpsURLConnectionHelp-工具类 是专门把javax.net.ssl.HttpsURLConnection类的使用,进行了封装,提供了常用的公共方法: package common ...
- 使用Array.prototype.indexOf()的几点注意
对应indexOf这个方法,在日常开发中比较常见的应该是String.prototype.indexOf()方法,Array.prototype.indexOf()方法和其有很大的相似性,本文不想去描 ...