介绍

PHP 数据对象PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。 注意利用 PDO 扩展自身并不能实现任何数据库功能;必须使用一个 具体数据库的 PDO 驱动 来访问数据库服务。

PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 不提供 数据库 抽象层;它不会重写 SQL,也不会模拟缺失的特性。如果需要的话,应该使用一个成熟的抽象层。

从 PHP 5.1 开始附带了 PDO,在 PHP 5.0 中是作为一个 PECL 扩展使用。 PDO 需要PHP 5 核心的新 OO 特性,因此不能在较早版本的 PHP 上运行

为什么要使用pdo

一般我们使用mysql的使用都是用addslashes和mysql_real_escape_string 来转义后然后写入数据库(注:请弃用mysql_escape_string)

mysql_real_escape_stringaddslashes的区别在于

区别一

addslashes不知道任何有关MySQL连接的字符集。
如果你给所使用的MySQL连接传递一个包含字节编码之外的其他编码的字符串,
它会很愉快地把所有值为字符'、"、\和\x00的字节进行转义。
如果你正在使用不同于8位和UTF-8的其它字符,
这些字节的值不一定全部都是表示字符'、"、\和\x00。可能造成的结果是,MySQL接收这些字符后出现错误。
如果要修正这个bug,可尝试使用iconv函数,将变量转为UTF-16,然后再使用addslashes进行转义。

区别二

与addslashes对比,mysql_real_escape_string同时还对\r、\n和\x1a进行转义。看来,这些字符必须正确地告诉MySQL,否则会得到错误的查询结果

在GBK里,0xbf27不是一个合法的多字符字符,但0xbf5c却是。在单字节环境里,0xbf27被视为0xbf后面跟着0x27('),同时0xbf5c被视为0xbf后面跟着0x5c(\)。

一个用反斜杠转义的单引号,是无法有效阻止针对MySQL的SQL注入攻击的。
如果你使用addslashes,那么,我(攻击者,下同)是很幸运的。
我只要注入一些类似0xbf27,然后addslashes将它修改为0xbf5c27,一个合法的多字节字符后面接着一个单引号。
换句话说,我可以无视你的转义,成功地注入一个单引号。这是因为0xbf5c被当作单字节字符,而非双字节。

所以不管转义,针对针对php 5.3.6以前版本,这套方法还是可以找到漏洞的,所以请使用pdo

为什么pdo就能防止注入呢(PDO::ATTR_EMULATE_PREPARES, false)

<?php

$db = new PDO("mysql:host=10.0.0.234;dbname=test;","test","123456");

$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
//$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$st = $db->prepare("select * from acc_admin where uid =? and username = ?"); $id = 1;
$name = 'admin'; $st->bindParam(1,$id);
$st->bindParam(2,$name);
$st->execute(); $res = $st->fetchAll();
var_dump($res);

使用Wireshark抓包可以看到

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiQAAAGwCAIAAAAWjunvAAAgAElEQVR4nO3dzZXsNpKG4fRJZrQZbVEtx4LxQZI3fbTTdaC14Cw0l2IBEYEAiMAP+T6HRyeLCQZAJhNfMm+x9Dl28/l8Pp9Pr1Jd6mjFQ+sDwEZGzIafiwHd+cWN56y82i4DwBSDwkZ8fJg5lD8lNv778bkyf9YIOU+nyVOO3RX20bMVADzY6LA59OwxMskomMeMuK1nZbFTwgYA2swMG+d6u2C+1Z2w6RIMhA0AJCaHTUJsbxe0w8b4Wkzr6H7kEDYAkFjoykZrbzcwwqb4vZzR0Z2EIGwAIDHzFwSa5/opYVN1xeO/SgOAN5j8q8/i12ierfLHxa/R7Dp2j0d92BilAOBtmAoBAOEIGwBAOMIGABCOsAEAhCNsAADhvGHzBwAArQibca6/Dz17LAAwFGEzAWED4G0+v/72+5fk199+F8Mm+WDu/Jye3FyZr08a1+2DUrzBmBggbAC8zefr6+u/f/2VL19fX1VhI06gxlPJeu2xax+UrDp7F/MsWf/J2O3tp+zwI2wAvE1L2Ij//aM06acdS7O20d7aB71fsaZxIeUZ6p32xlYA8GAjwuYP6fJiTNhUtdc26Vjf3hAAnurz9fX148ef//r3/16XHz/+bAibP2om4r5ho32XZY8h/5GwAYAI/x82+WKHjfhAW5l2qfxDTq8rm9r1hA0ARPt8fX39R1IMG22N9q/ieXttlt8lbBra2wMDgKcaETba11zXp4z2xam5NmySLrSnatsnIWQMnrAB8DbV99mUKzbNpJ5QAQBsqvNfELiTGeQNADxVt7BxfuUFAHgh/jYaACAc/z8bAEA4wgYAEG6nsPl8dhqt31P3CwBOO01zT52U++7X+Zsa+ZqnHkAA6xsx+yR3aN6pE7rJgLlY7KJjv8VS5A2AKQaFjfajkUB5PiUbFhvXhpzRRqzz92Ox/nVl0qyqzrm+OHh7/FVtAKC7yWHT1kackYuPa8dZrC9mRt64OB67TW3YGOFK0gCYZcWw0ebE64WCs36XsNHq167XuvAcHw8jtPyJBQARJv+bjfG1klanWD8ibMT6C4aNXYfIATDLhCsbcX3HKxvnU23jNNavHzZ3igPAHSuGjbaJZzZ3dt08TmO9ODzPlZa9O1WXI7V9AcAYM8PmqPyGzQ6nYh3POLU64nr7CuZsWRxPx7DR6vsPAgBEYPYJxxQPAMyD4QgbAGAeDME3VwBwxVQIAAhH2AAAwhE2AIBwO4XNLv/+scs4AWCYnabFXSbxiePkFxMArGny30arrRO6iX1zZVCnHfUaPwB0N+EvCGh32udbGXfsa7flXxvXhpx2Y784/vO/yYPkqeI47fb5qOzxGz8CwESTw6atjTgjFx87x5n3ooVN/uBs4BmP2P5O2BhjBoC5VgwbbaJM5nRP/dCw0Zpp43Guv6PqSg4Ahpn8bzbG10panWL9m2Fz6HFiP+sJFXGcvYIh2XHyBsA6JlzZiOs7Xtk4nzIax4XN/UEajCs8AJhrxbDRNinO5v6uPeMRuzvX22Ej7lpb2PivUQgbAMuaGTZH5TdsdjgV69SOM8+Ya8wUr2yKO1UMoesmxcHn9Z2bAMAATEkAgHCEDQAgHGEDAAhH2AAAwhE2AIBwhA0AINwTwmaR3/f13w2zwmgBYKRHzXfrhw0BA+CdBs19xk2XWvu2Xhq26oWwAQDNKn9BIF/T8OcA8vWeOuJTvj1T64h/JsDeNQB4sPD5zv8vGVVbiQ3sItd5/7qyOWyMOp7HAPAebw8b/wj93Rn1CRsA7zQ5bIyvuarai1tNDBvt6zLCBsA7zQwbYxYuZsniYePcBABeYuYvCKwQNhH/ZkPYAEBi8q8+a+uvT3nqnM8a/WrFm8PGqGPsr7MyADwJcx8BAADhmGcJGwAI99J51vguDgDQHVMtACAcYQMACEfYAADCPSFs+HeXuTj+AIqeME0w2c2lHX/7tzC0O6W4JRZ4pEF/QaD2V7+qphXmoFOvQ9H9+Od3zuYPxHtsr5vwQgP7Gv3naow7+ZM1xTv/k5r+9oeef0Yu1oaluGvFcda2z5tpdbQfjZFf64hbiQPQyjrHU+wIwI4m/G00Yzax22gN7LlVbO8smzxVFTb5Y23u1vZd2687+661sTdpG6e2LWEDvNBDwqaqvhYbDZNycWyHEhIN7YvrtS4GhI29bVW6GJsTNsC+JodN/nWNuIndvqH++ZRWvOo6xhjktc7uYaONoTk8an8kbIB9zQybm1cnd+p76jRzhoq2/klh0zCeoE8AAOYaHTa1geGsIz7VN2z8M93IsNH2Xavv3AujTV7Bc/y1+sXrHudTABY3KGy0j6XGh1Z75fWpvx9UtW8eT8MuOyffvNN8AHl7sZl9MJ17YR+ifGDi+O2Dqb0oRteekQNYEO/e7bVNweLk7inFjA+gARPH9kbO/s5AAoAEE8eWqq5F+vY4pjsAD8PcAQAIR9gAAMIRNgCAcCuGjfYPA+P/oWKKql9Njh4MAHSx4mxVnEOfPckSNgCeJ3y2ariZg7CZPQQA6GzoLRriyjx+PvpfBNBK2bed+6dvu1NttFV3RBqDPHf8+H4Qkr0wRmLvAgDMMjlsxGeTuVKcmu3Nk6caZl5xHi82a6sv7rv4oDhI+7gBwCyLho29od2gyyTrmbXvdFTc3+t1jNbdgOMAAF2s8jXazbBJ3BlkcTzF9TfrEzYAnmdm2BhfJfk3FBvcH2FE2FTtL2ED4EkWDRt7rq+aVf3XOlWB5+naWV/cd8IGwJMs9DVaMqsa34mJ0672NVrVF2vFOv71VfWvawgbAM/DfNTZRzF7XAAwE5MgACAcYQMACEfYAADCETYAgHCEDQAg3LphU/tLXPd/6Sv6l8e0si/5pTXn3j3+OADvtO67enzYXEt1qVNb9tmTLGEDvNmgd/Ven9z946yNw47VtvPsvQNgG/H+T26VTx4bt9OL98wnd9ob7bX62kpxkMZOJYr1jfFo/RYPRXGcxnjsLoyu/fXz1+t6EJK9aHgdAewi/K0rTkDng+vj4rbXH7WpLfkx2cQzPG2lqNjSGHNx/PnmyVMNM69xSD3rq+qL+y4+KA6y+DoCWNzksKnatjhR1ravWukZod0gYvy1PLP2nY6K+5u/+lOOA4DBXho22jc2zoEVW4r1G8afcI6qbTzF9TfrEzbAm70xbIoT7s2w0erfHH8z53ia+63aX8IGeKcR79vayU5rkF+a+Nsfyuw2OGzsrqtmVf+1TlXgebp21hf3nbAB3mnQ+1b8Iqg2bJI6dyapz3fFfu1BiruW1z+HreWEsb9aF7WDtIfqWV9VP3+9PoQN8Eobv2+ZdEb6KGaPC8AeNp4smOkAYBebzdd8pgaAHTFlAwDCETYAgHCEDQAgHGFTxj8UAcBNzJ4VCBsAaDP6LwjkP26kePshAEA0KGySu8qTp/Jnr7edi+3Fed8/9Wt17K/LtJHwDRsA2MZd2Rh/niR5Ns+bvFlexz/je5rZg6wqBQBYMWyKD4w6zvEUtyVsAKCjof9mI16pJF9D2Q86fnNlfBenFSdsAKDNzLARvxPzX9n0HZvx2FhJ2ACAx+jfRhMvYo4eYdN2rUPYAMAAk3/1Of9azM4Y42s0f9gY35XZX9NpCXT/Oz0AeDamSABAOMIGABCOsAEAhCNsAADhCBsAQDjCBgAQbt2wqf194l5/U+A9v8f8tv0FMNG6s8z4sLmW6lJnF2/bXwDjDZpl9voEvcs4e+EvIwCINuHP1SSP8xzy3OF/LWX8TQGxvrZSHGRxv5z1r42P7DqsuMue8Rh1/Pv7yTi7BgBD+FRifGq+zmXipCaGR76t0T6f7ovD01aKzfz185jRtrX3wh5PW5vikQSAmyaHTdW29o8N7atW1g4vWel5UNW72FftIdVWEjYA+npp2NhfE90Pm7y+/aDjN1faNV/V/hI2APp6Y9j4v/tqG55Y339l04XzOzptJWEDoK/5vyDg3DDf9iVh03atQ9gAWMqgOUX8Dqc2bJI6zWFzreMJLefw7Pp2xhjj8YeNvUe1+6s1BoAGG08lzIMAsIuN52vCBgB2sdl8bXwXBABYFlM2ACAcYQMACEfYAADCzQybt/27y177yz+PtXneceu7R2117vT+pNdia4TNOBvtrzbU582kfT37uM0KG/HOs7yOfZC3PvLPMPqmzuupMPHln9L1gqe7MTkWV3p2R3zdr+ubB5OU0npMzjdtPLWij9uaFnzX3HkhMNjoP1eTr7c/pNS2L65vmHG0frXhHZcZMOm6avxG+6SyZ/xa2eLxScavlS32K643jqezI+04iEfMqFOsMOy4Hd9f9OQQVZ0nze09B8S5C+IhqipiN+iyHgOEH3rj1RXfA8bm2hvY7qL4uEgbpziJXOeIZLIw9lerr/WVV7PHr/3Y/F4tdu2vXKzpeX2Nsp46nn7HHLe8o6rzxBin87wy1leFRPOz9+s4JwQMNjlsii2d73DPe+NO2Ig/amGjNauqUztIQ99J81TVqbH+JWHjPG5Gv0HrPWPwb+hpdj9sjLd8r5xDd4uGjfjmLJ5GecGEs5RznB3DRhznamGTv0D+To31I8Omy6RfO9Sq42b06zxP7pxX9vFxnpC1O9jc0hhnw7mEaCuGjfaurp0g/F37a2rjPH/Mn/VMCvcHaYiYNI1tays3HwdtMi125DTluBntnZ3eOZ52m9XCxmhA2CxoxKG/8ybZJWzOyc4OG3F4bW8M4+ObUUcbg6frm5OmNp62wRTH0zdsZh23a7+7hE2xZVWdXp9partGd4MOvfgJ1P7kWGwvNvb0mzzlGXxxnOf6fLTJA3swnv29blIcvDZO8SlxH7VxVvWbbOI5CNfjkK8XB5B0YQ/GswvTj1u+U+Lx0cbgaa+NUzyAnsHnpW7WcVYuHuSqftEdRx+YIE8+bZZcc4r0j79LX4sUwR28AMDSmCWPyuv4jtuiI14DYDnR1wrAeJzKAIBwhA0AIBxhAwAI9+Sw4ftuAFjEk6fjXmHD7+8DwE0jZskBc/GwGxS0W8y6dwQATzI5bMSLho/jTvu8WVWdozUk8vHYOwgAOFYIm/yxmBl5Y7FNUtxoQ9gAwDAzw0acuBvWa10Y7ds4BwYASEwOG/EbsDXDprZ3AMBpoSsbbf0KYaP9k4/4b0UAgMSuYeP8Nxv7R2dCFJuRNABgGxQ22kVA1ddo1/ZiMzuB7oSNfQVD2ACAbeNZkikeAHax8XxN2ADALjabr/kHeQDYEVM2ACAcYQMACEfYAADCETbYScQ/1/FPgMAAvMewDe3OqjwqGu6LIm+AUCP+TzPGTZ1TaOPRBmm0L9ZvGMxH+UvSzeP0926Mx9gvYzzi+I1N7KH6nzUaGz06RwKgwbh3l2c6uM6zxXkt3zZi2jLae9b75y+7X88kXjtX3jkOnqOkZU/DnF58cZ1hcz3BPHUA9DItbPI1ySdosZk95y4YNsXu7Gbi5LhR2OTDa5vNi1tpH0rsITV0BKDNomFTtf7+SKrGWbt+2bA59ElZrLZs2DjDw3OgCBsgyMywOZT3v33Fc9U8EqOIuEZsPyBsasfTfHBqj0NVhWvMiANuGJ7nqXwMN6sBaLZZ2MSNxHjWHwPi+oiwqargVBy2/UI0hI1RzdmmuO11DJ4wJmyAIJPD5vg5CxhrnGHj/zg/Mmz8k9dGYeMcVX4R4+xIHFvHlOLKBhhv0bA514s5ZDx1fyR5ce1DsWe9ZzzFUbWNv9i73bi4RjsOxfbFrrXR+sdvV65dD+C++e8u/2S6tTwJatNor34jhA5702MC7GLyG8z5mRr4W0RS7pu+wEamvceMj9i88wHgYZjWAQDhCBsAQLjPL/9zsLCwsLCwhC4zw+Zq+oFgYWFhYYlblriyWSpsqsLPaKw9Ja4ncVlYWJ69VIfNr7/9/iX59bfftU1yeYPpByIZSXFI545oiSLWydfbdVhYWFiesVSHzdfX13//+itfvr6+tE08E3e+xrgCyGdnO8mc83gxGDw/dqzDwsLC8phl0bARn8rTxVP/ftj8ogeGZw1hw8LCwrJr2PzyfRLvMlMXw0DshbBhYWFhKS4tYfPjx5//+vf/XpcfP/60w8b4musX82s0T9hcN7lzLAgbFhYWlqClMWzypeOVjRYwntn5zpRN2LCwsLAELS1h8x/J4LCpvUhy7l0xGIrR0rcOCwsLyzOWFcPmF/2bt+ua68Sdt0w2ce6d1mk+WpFdR1xv12FhYWF5xjLiPpughUmZhYWFZZdlib8g0LYQNiwsLCy7LJuFDd81sbCwsOy4bBY2LCwsLCw7LoQNCwsLC0v4wv88DQAQjrAB6nwuPOsBHIQNunjnDKvt8gsPBVDEuwK3nDETN8PmFxC1mwSJC5vPd80jAdbBOYo+QsPmWjx5nMzIn4yn/nVDsaP8R3GNsd5/8Wc067K/wBScmugj+srmOr2KPRo5Uawvbrtm2BQfA2viHEUf/vmu9sP4gLARf+wbNlXEI9Nrf4EpOEfRR/SVzaGnTv7j7mEjljJCmrDB+jhH0Uf0lc3xyrAxxhPXIxBh0XNUm4N6raff7vUHXNkkAxgZNuKOVx2K2pfGHo9zJMA6Fj1Hd59839PvR+IfgHOQ2o9Gp/7BeOrnzcQ1xnr/kTEOpucpTxfAeJyaAIBwhA0AIBxhAwAIR9gAAMIRNgCAcIQNACAcYYNnWuf3gBcZBjAXbwPUWWcSt60zzkWGAczF2wAVznlz5AQaesfoALPGbNys6tykux1fPvTCaw+vhskrtN/zxv4khMRkujY+suse7Z78/CntrwM4x2/8RQBnfX/iikfA6Lch1LX2verjSXjJ4SXOxRP7bZujrw+cm+TrjeEZNfOWYlm7flUSiGWN+lWvqdHYCDl/fTwMrz28eoVN7YdcI2z8GxbnXGMT53jsYdhJYwzsznEWy3YMm+IxvFMfD8NrD6+JVzZiMnUMm9r6/sA7zEm5uGt3DnJSpHvYnJuI115tLxkejNceXh0/cWuTkadf/wCcYaPNhh3DRmzZq76zSFDYVBUhbN5s0dfe/jB4fz39NtdPHrT1W2XBsDnq/+0kL9hWv6HfZCvCBlMs+tpvNPm+sN/82a3D5lC+qeseNnlNsV+7flu/+TDETq9PeeoXi2j7FXe2YFm85ECL6OmS6RgPwwkNVIv+bM5nfzwPJzRQIfpbIL5lwlNxTgMAwhE2AIBwhA0AIBxhg2ca/y8f/EMLYODtAdnu/0xN2ABL4e0BgfPGxjGMmxOXMmtgDceHm4QwHucEUqtN7tp4Pj//5FdyEeO8PV4LVGcpe5zabfN2iuddFzvNW9rj/2T8XeTte9XHG3AqILVR2Bjzu7Fhsq3dzKivdWePxNPvURk2YlnnfjnrF59qro+X4JxAKjpsaj/8GmFjj7M4m9+sL3bnH0av4zwgbMT2verjJTgnkNroysZoVmzgCZvaUNQmZa2OcTHklxTpHjbnJuK1l71fwIlzAimubLSCnnEWh9GlL6NIUNhUFSFskFv0nLA/JN5fT7/FOsmDvv1WiQib64A966vGWZXW9w+pc/yEDeZa9JxYcPJ9Yb/5s1PCRhtPbdhc6xzSHG2s9+ygPba4Q2ocB2Pwzp1yFtH2K/SswF44FfBSi8yDiwwDiMaJjpdaYZbnsz/egxMdLzV3ludbJrwN5zoAIBxhAwAIR9gAAMIRNnga/y8r51vF1Rfr3Nkc2Aun+9s9+J+pg8KmrX73zYG9cLq/2jnfLTvxJRlQFQniTYjdRrZt2Bg3gTo36W7Z0w8d8Rq/V8OkM54RNsXx5xuK34AZ98BfnxXHJo7WmYjJGOw6xQHUfg1oFEn61Y5bsQvxkHapjx3x0r6XOLeu5pzxk/8elWGjrTGeNSZlz5ri8TSCRKxj729VEohljfpV54bR2Ag5f31sitf4vWaFTdWH2blhU1Wt9ngmu1Os0+v1GhA2Yvte9bEpXuP34srGfrYhbKq+ETImZa2OcTHklxTpHjbnJv7js+a5h754jd9rVthUTcrGB/AFw8YornVXNciNwqaqCGHzBou+xvaHvvvr6fdsnzwY02/DCPM1yUQWETb2XNklbGrr3H8JtONG2CDUoq/xCyf9if3mW20RNsdl/MWW4iZ2+7Oss/3x/XgWD4gxERt17r8E4m7m/Yr1PV14imj7FXQWYQW8tIBszYlvzVEBRZy4gGzBaZ3P/tgXJy4gW2pa51sm7I5zFwAQjrABAIQjbAAA4Qgb7Mr/S8Zn++ghAdDw9nuaF/4zMmEDrI+336Oc8+mTJtbinZKDw8a4KTK661n1gfs4R5+jYRLcQnG/7DvVk2b2ze3O8eRltX4/GX8Xxm32N+sD43FqPgdhY/9ohET+bHE817LFYVS9FkZjI+T89YEpOEefY5ewqf0wXmzsDxujmd+AsKndzWVfa+DEOfocu4RNrY5XNnad2vFoqZP/2NCX/R2afZUGLIhz9Dl2CZuGKxvjx2KDTcOmqsiyrzVwWvQcNb5J6LL+wf0mD4b1GzffdQwbY+7270JShLABPBY9Rx8w6U/st2re3CJs7P0S4ydv//l5ISLWaQubQ8oeo76nC0+R/Nmq1x0Yj1MTABCOsAEAhCNsAADhCBsAQDjCBgAQjrABAIQjbPAuw34/mN9CBq54P+yKmyraEDbAFLwftnROZG+Y0YybKFfWPM6G/Y0+Jrscc6yMc2g/m06+zbT9Nf4igPYXBDy39zfX1+pcn3LubzJso99Pxt+FZ7/a6gM5Tp395BPErJGMoe2vNikXD4hxAPN5Vmtm96vN4/bArnXysvawPZWLjT37C7ThHNrP7mFT+2HZCBttvV3TPoCe+lXraw0IG7F9r/qAiHNoP7uHTa22yd2InPthI4Zl37A59NTJf2zoS7v2Ej8EPP4cwwCcQ/vZPWyir2xqV968gnGW9RsTNlVFtjvHsKBFzyHjSr/L+gf0mzwY1m+X/a0yMmyuO3InbPID4j9EteMxhlTbl6cZ0GbRc2ijSX9iv3dmtDv9+tf3Iu6vEQbiwdE2vG6S1NG2+nxn17k+5dxZT7/GLhTrF4top1boq4xn49QBvmE+BSLwvgK+IWyACLyvgPI3bwBu4q0FAAhH2AAAwhE2AIBwhA1gsX8V2N+SfxDCy3H2r45JaiLjyBuvS+164A04+5f2UW4wfI+PZGTvHbe6OfL8gql5JL289rREA86VdTVMLm/wKd1R//l5A/+db7SMkCsWqVrvj09xN7UhtSW01r5XfbwZp8i68jf8rJGswzgmyTxoNBB/9HTnfDYubI7vuymWNXbZU7/4VHN9vBznyrqeGjbNH4rtA6JNvs7NPZs4n61d7zQgbLQ47FIfL8e5sq6nhk2bfPe10Hp22Bx66uQ/NvSYR47x4eDl5ySqcK6s66lh03Bl4/nEXbuesPH0ZRd5zDmJARY9V4wr+i7rN+o3eTCs39D9rdJrTl8zbPyHLgkAwgZ7WfRcWXDSn9hv/uzu++v3kWjPnis91Zy9Nzxbtb55MNpxEOt7uvAU0U7FoFcfT8IpAgAIR9gAAMIRNgCAcIQNACAcYQMACEfYAADCETbYG793C2yBd+kqmDTbcNyALfAuXYLnhsTXMu4o3IJxM6Zzk+52PIzYHefcfA2T0atox8e4p/1Q7mz3t9fu9k9KOcefbJiPR9yp2i6M/b1ZH7iPU20+wsZWPD7iDGu0P/TYMDa0eymOP+/CqF91DhiNjZDz1we64Jyb721hU/vhuti4mAr2JtoAer0uA8Km9rA8/hzDgjjn5ntb2NRquLLRfhRDy3NlcOdFSYp0D5tzE/Haq3aXgSCcc/O9LWwarmyMH4sNxMn9eWFTVeTx5xgWtOg5Z3wz0GX9gv0mD4b1O2V/q0wMm6PHLid9ETZ4p0XPuReGzWl8v3Hru/h8JzZw/iiWGhk2xnjE+p4uPEW0UyvuVQMSnGqAhekY6II3EqDisz/QC28kQMC3TEBfvJcAAOEIGwBAOMIGABCOsAEAhCNsovDPywBwYjYM4bxhEB6fzPTxGD96Nulu+jEBijhH+2uYjGDQDuDn558aSxJIPP7Xxod03Vn1FwG07vJEbEvK4m3/N+sD43Fq9kfY9GWEjTjpa2GTPzCqFceTd2e87lXngNHYCDl/fWAKztH+CBtb7YdxI2zEH7WwsZv5DQgbsX2v+sAUnKP9ETZ9ack0N2yMyvmPDX3lkWOENOcY1sc52h9hY3vGlY1ROf/xfl92Ec4xrG/Rc9T4JqHL+gH9Jg+G9Ttrf+Pmuzthcw6sGDb+XRDrG+MxdqG2L08zYE2LnqPPmHyr5q8H7K+/3yqfzLk+aZZvcq4PChut37yU/3zwFMmfrTrfgPE4NQEA4QgbAEA4wgYAEI6wAQCEI2wAAOEIGwBAOMIGsPD7xEAXvIvuYjJ6Nl5foAveRbdodwiiu6pJn5fjb12Og3ETa2i/E+sjAq9Zu4Y3IZqJ98znP2p/buBa5Oad/ElHxa2M9nbjfK/FIYn17eOQVy4eh6Q7Y/x2v0YXzuPTUB8r4KVql78xZo3k8ZK5OH9sP1Vs7+z9/NGYfMXNxfGL256Nrw/svmrHI25lSIbh3xcne5D362MRvGbtCJs2DR9OVwub4tg8HYl1jDnd2W/3SXlA2NS+XrzXdsRr1o6wGeapYZOHrh02YkiPCZvzQVC/eeQYH0p4r+2I16wdYdPGmESq2j8gbIyVxgP/8DYKm6oivNd2tOhrps1BvdZ37Dd5MKzfWfvbpd8qnsk9GcCUsHH262wcHTb+l0w7zoQNqiz6mu01+ebP7jLprx82xRn57Fp8CbSVtUep6seki+KML+6FuHne3j8esWttYHZBcTzarnnqF4sYL6VnF7ACXioAQDjCBgAQjrABAIQjbAAA4QgbAEA4wgYAEI6wwd74/VdgC7xLvZjU1sTrAmyBd6mL5wY9RPhIRvY+rK8i++ZNzybdLXV8sDjOlY/UJ0IAAAMtSURBVLKGNzm6s28vT5qdK/Nn7dvRr58qqm5fN/q9rtH2wnkE8h7bxm93cf/4ADlOkbL8jTdrJG9mHPZ82k0eaC2rKtsNjH6NkMifLfaVD9s4P6vOVf8RbquPl+NcKSNs+mr+0O15ypiLtdfRGENV2NT2W2tA2Ijte9XHy3GulBE2K+gSNkbIiVOtEUJJkWFhc+ipk//Y0Jd2ZMTjxnsBfpwrZYRNX4tc2Xh6KX7Sf17YVBXhvQC/Rc8V44q+y/qGfpMHw/qdtb+h/TbYOmyMubstbq9bETbYwqLnypqTb/7s7pP+q8LmyC6q8pVice11vz5l9Hs2ELvwH7p8DOJ4POPX6heLGIfCswt4M04RIBYTMXAQNkA0wgY4CBsgGmEDHIQNAGAAwgYAEI6wAQCEI2wAAOEImxQ3DQBAd8yq34h3AmI646ZCrX2XTmtrRp82nJbYF+fuPxomFwxgvBB5An0y4ibOfpO79O/06xx/3/rAOjhl/0HYrMkOm+LjfBN/EhzSxa5xnlSdM333C1gc5+4/CJsxGj6kax//tR+7vHYDwkZsH71fwBScu/8gbNanfZeVTNwdw+bQU0ccUkMvxndoEfsFTMG5+w/CZoyb//ygTfpimzvGhE1VEc5J7GvRc9f4hqHLeqPf5MGwfmft75R+77gZNv6hJgFA2AB3LHruzp18862eOulvETaf72qfah6qHSp2fU8XniL+/QIWxykLAAhH2AAAwhE2AIBwhA0AIBxhAwAIR9gAAMLtFzb3f+/T+JVTAECE/WbbjiERGjaEGQCcRsyGy15JhN6HGN0FAGxkUNiIjw/3TdRG48/Pv1uVPEg2KQ7MOR7H7vI31gAgNTpsDj17jEwyCuYxI27rWVnslLABgDYzw8a53i6Yb3UnbLoEA2EDAInJYZMQ29sF7bAxvhbTOrofOYQNACQWurLR2tsNjLApfi9ndHQnIQgbAEjM/AWB5rl+SthUXfH4r9IA4A0m/+qz+DWaZ6v8cfFrNLuO3eNRHzZGKQB4G6ZCAEA4wgYAEI6wAQCEI2wAAOEIGwBAOG/Y/AEAQCvCZpzr70PPHgsADPV/a3P/Si2/4y4AAAAASUVORK5CYII=" alt="" />

这就是神奇之处,可见这次PHP是将SQL模板和变量是分两次发送给MySQL的,由MySQL完成变量的转义处理,既然变量和SQL模板是分两次发送的,那么就不存在SQL注入的问题了,但需要在DSN中指定charset属性,如:

$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root');

使用PDO的注意事项

1. php升级到5.3.6+,生产环境强烈建议升级到php 5.3.9+ php 5.4+,php 5.3.8存在致命的hash碰撞漏洞。
2. 如果使用了PHP 5.3.6及以前版本,设置PDO::ATTR_EMULATE_PREPARES参数为false(即由MySQL进行变量处理),php 5.3.6以上版本已经处理了这个问题,无论是使用本地模拟prepare还是调用mysql server的prepare均可。在DSN中指定charset是无效的,同时set names <charset>的执行是必不可少的。

参考

http://php.net/manual/zh/intro.pdo.php

http://zhangxugg-163-com.iteye.com/blog/1835721

pdo,更高的sql安全性的更多相关文章

  1. SNMP 原理及配置简述 net-snmp-utils net-snmp 第2版基于SNMP 群体名(community name) 第3版引入了安全性更高的访问控制方法 SNMP协议操作只有4种 Apache的php_snmp 模块

    SNMP 原理及配置简述  net-snmp-utils  net-snmp 第2版基于SNMP 群体名(community name) 第3版引入了安全性更高的访问控制方法 SNMP协议操作只有4种 ...

  2. 数据库查询SQL语句的时候如何写会效率更高?

    引言 以前刚开始做项目的时候,开发经验尚浅,遇到问题需求只要把结果查询出来就行,至于查询的效率可能就没有太多考虑,数据少的时候还好,数据一多,效率问题就显现出来了.每次遇到查询比较慢时,项目经理就会问 ...

  3. 我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 Internet 上用于确保您通信的安全性。

    早上使用.Net WebClient类采集亚马逊数据,返回http 400 Bad Request错误,内容里面有“我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 ...

  4. 关于IIS部署时出现“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”的问题解决摘要

    系统环境:windows2008 X64 IIS版本:iis7 oracle客户端版本:11g,另外装了32位的客户端. 网站.net framework版本: 4.0 目前状况,IIS可以正常运行, ...

  5. 声明式编程——抽象程度更高,关注是什么(what),而非如何做(how)

    CSDN:AngularJS的设计理念是什么?灵感来自于什么? Misko:AngularJS遵循的设计理念是--构建UI应该是声明式的.这也是AngularJS中标识符(directives)想法的 ...

  6. “System.Exception: System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本” 的解决方案

    在项目部署过程中ORACLE客户端多次会遇"System.Exception: System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本&qu ...

  7. 如何编写更好的SQL查询:终极指南-第一部分

    结构化查询语言(SQL)是数据挖掘分析行业不可或缺的一项技能,总的来说,学习这个技能是比较容易的.对于SQL来说,编写查询语句只是第一步,确保查询语句高效并且适合于你的数据库操作工作,才是最重要的.这 ...

  8. (摘)Entity Framework Core 2.1带来更好的SQL语句生成方案

    微软发布了Entity Framework Core2.1,为EF开发者带来了很多期待已久的特性.EF Core 2.1增加了对SQL GROUP BY的支持,支持延迟加载和数据种子等. EF Cor ...

  9. 在VS 一切正常,发布到IIS出现问题 [System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本]

    在VS 一切正常,发布到IIS出现问题 [System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本] 前提条件: 在vs 开发的时候,一 ...

随机推荐

  1. facebook开源项目集合

    Facebook的开源大手笔   1. 开源Facebook平台代码 Facebook在2008年选择将该平台上的重要部分的代码和应用工具开源.Facebook称,平台已经基本发展成熟,此举可以让开发 ...

  2. 借助 Resharper 和 StyleCop 让代码更整洁

    一:工具安装 Resharper 和 StyleCop 必须安装. Resharper 的配置文件如下:Resharper.zip 请按如下步骤导入, 1: 2: 3:   StyleCope 的配置 ...

  3. 21.重入锁ReentrantLock

    ReentrantLock     重入锁,在需要进行代码同步部分上加锁,但是一定要记得解锁.     类型:公平锁(队列方式进行排队).非公平锁(按照cpu的分配),非公平锁性能要比公平锁性能高,默 ...

  4. 怎样通过terminal得到AWS EC2 instance的ip

    可得到private ip,也是本地的ip.事实上通过ifconfig也能得到: GET http://169.254.169.254/latest/meta-data/local-ipv4 公共ip ...

  5. 3D有向包围盒与球体碰撞的算法

    之前发的小游戏滚蛋躲方块中,用它来判断球体与立方体是否发生了碰撞. http://www.cnblogs.com/WhyEngine/p/3350012.html 现在发布下该算法: 有向包围盒OBB ...

  6. go语言基础之结构体比较和赋值

    1.结构体比较和赋值 (同类型的结构体可以相互赋值) 示例: package main //必须有个main包 import "fmt" //定义一个结构体类型 type Stud ...

  7. 几行简单代码实现DIV层上显示Tooltip效果

    最近在做一个项目,要在鼠标移到层上后显示出tip提示,网上找了半天,都很麻烦,就自己修改了一个,记录在下面 测试在IE 7.8.9及 chrome 上没问题. <HTML> <HEA ...

  8. 使用WPF来创建 Metro UI

    当我第一次运行Zune时,我为这些美丽的UI所折服.当时就说这肯定不是用WPF做的,因为这些字体是如此的清晰而且UI反映的也非常快速..而且我从维基百科上也了解到Zune的第一个版本是2006年发布的 ...

  9. GO语言基础之reflect反射

    反射reflection 1. 反射可以大大的提高程序的灵活性,使得 interface{} 有更大的发挥余地 2. 反射使用 TypeOf 和 ValueOf 函数从接口中获取目标对象信息 3. 反 ...

  10. Unity异步加载场景loading条

    using UnityEngine; using System.Collections; public class LoadingScene : MonoBehaviour { public UISl ...