ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## SQL参数绑定 参数绑定就是绑定一个PHP变量到用作预处理的SQL语句中的对应命名占位符或问号占位符。可以有效的防止SQL注入。 **注:要求无论何时尽量使用参数绑定的形式来构建SQL语句** 在系统中直接运行SQL语句操作数据库的函数(`pdo_fetch()`、`pdo_fetchall()`、`pdo_fetchcolumn()`、`pdo_query()`)需要开发人员手动绑定参数,以`pdo_fetch()`函数为例: ~~~ $row = pdo_fetch("SELECT * FROM ".tablename('users')." WHERE username = :username", array(':username' => '米粥')); ~~~ > 上例中 :username 参数占位符,系统中只支持 :var 以冒号+变量名的占位符 > 第二个参数中 ‘:username’ 对应的值,则为要传入的真正的值 ~~~ $row = pdo_fetch("SELECT * FROM ".tablename('users')." WHERE username LIKE :username", array(':username' => '%米%')); ~~~ > 上例中演示如何绑定Like查询 ~~~ $row = pdo_query("DELETE FROM ".tablename('users')." WHERE uid = :uid", array(':uid' => '1')); ~~~ ~~~ $row = pdo_query("DELETE FROM ".tablename('users')." WHERE uid IN (:uid_1, :uid_2, :uid_3)", array(':uid_1' => '1', ':uid_2' => '2', ':uid_3' => '3')); ~~~ ## 禁用高危SQL函数、表达式 在微擎系统中,为了保证SQL注入安全,系统还禁用了一些SQL语句中高危的表达式、函数,开发者在开发模块时,尽量不要使用以下关键字。 ### 禁用函数 * load\_file * hex * substring * if * ord * char * updatexml ### 禁用关键字 * @ * into outfile * into dumpfile * union select * union all * union distinct ### 禁用一切SQL注释 * /\* * \*/ * # * –