信息:以下规则描述一个样本。
得到一个完整的访问所有规则的描述,升级你的计划现在。
SQL注入是一种安全漏洞的恶意SQL语句插入到一个执行的输入字段。SQL注入时使用下面这样的代码:
1
美元查询=“SELECT * FROM用户用户名=””。美元用户名。”和密码=”.md5 (美元密码)。“””;
在这样的请求,你可以分配美元的用户名
价值托托”或1 = 1
。生成的SQL请求将:
1
选择*从用户在哪里用户名=“托托”或1=1和密码=“f71dbe52628a3f83a77ab494817525c6”
因为操作符优先级,这个请求相当于:
1
选择*从用户在哪里用户名=“托托”
结果是,恶意用户可以登录其他应用程序用户无需提供任何密码。
为了避免这个问题,您可以在SQL查询中使用参数绑定。这个特性是由PDO-PHP模块和使用的是这样的:
1 2 3 4 5 6
美元卡路里=150年;美元颜色=“红色”;美元支撑=美元康涅狄格州- >准备(选择名称,颜色,从水果热量卡路里< =热量和颜色:颜色的);美元支撑- >bindParam (:卡路里的,美元卡路里,PDO::PARAM_INT);美元支撑- >bindParam (:颜色的,美元颜色,PDO::PARAM_STR,12);美元支撑- >execute ();
从PDO学说完全集成这一特性。你可以这样使用:
1 2 3
美元查询=美元新兴市场- >createQuery (“从CmsUser u离开加入选择u。文章用一个。主题:foo”);美元查询- >setParameter (“foo”,美元喷火);美元用户=美元查询- >getResult ();
学说提供了很多工具来抽象你从原始SQL查询。出于这个原因,你会自动保护,当你使用“高级”的方法:
1 2
美元qb=美元这- >createQueryBuilder (“p”);美元qb- >(在哪里美元expr- >像(“p.u”,“test_ %”));
定制这个规则,您可以将以下部分添加到您的项目配置:
规则:#……教义。database_query_contains_string_and_variable_concatenation:启用:真的