pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

  • <small id='jr4zX'></small><noframes id='jr4zX'>

      <bdo id='jr4zX'></bdo><ul id='jr4zX'></ul>
      <legend id='jr4zX'><style id='jr4zX'><dir id='jr4zX'><q id='jr4zX'></q></dir></style></legend>
      <i id='jr4zX'><tr id='jr4zX'><dt id='jr4zX'><q id='jr4zX'><span id='jr4zX'><b id='jr4zX'><form id='jr4zX'><ins id='jr4zX'></ins><ul id='jr4zX'></ul><sub id='jr4zX'></sub></form><legend id='jr4zX'></legend><bdo id='jr4zX'><pre id='jr4zX'><center id='jr4zX'></center></pre></bdo></b><th id='jr4zX'></th></span></q></dt></tr></i><div class="3s3irul" id='jr4zX'><tfoot id='jr4zX'></tfoot><dl id='jr4zX'><fieldset id='jr4zX'></fieldset></dl></div>
      1. <tfoot id='jr4zX'></tfoot>
      2. PHP MySQLi 準備的帶有綁定參數的查詢是否安全?

        Are PHP MySQLi prepared queries with bound parameters secure?(PHP MySQLi 準備的帶有綁定參數的查詢是否安全?)

          <bdo id='VTVpY'></bdo><ul id='VTVpY'></ul>
            1. <i id='VTVpY'><tr id='VTVpY'><dt id='VTVpY'><q id='VTVpY'><span id='VTVpY'><b id='VTVpY'><form id='VTVpY'><ins id='VTVpY'></ins><ul id='VTVpY'></ul><sub id='VTVpY'></sub></form><legend id='VTVpY'></legend><bdo id='VTVpY'><pre id='VTVpY'><center id='VTVpY'></center></pre></bdo></b><th id='VTVpY'></th></span></q></dt></tr></i><div class="ibgfnct" id='VTVpY'><tfoot id='VTVpY'></tfoot><dl id='VTVpY'><fieldset id='VTVpY'></fieldset></dl></div>
                <tbody id='VTVpY'></tbody>

              <tfoot id='VTVpY'></tfoot>
              • <legend id='VTVpY'><style id='VTVpY'><dir id='VTVpY'><q id='VTVpY'></q></dir></style></legend>

              • <small id='VTVpY'></small><noframes id='VTVpY'>

                  本文介紹了PHP MySQLi 準備的帶有綁定參數的查詢是否安全?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  歷史上,我一直使用

                  mysql_real_escape_string()
                  

                  來自最終接觸數據庫的用戶的所有輸入.

                  for all input derived from users that ends up touching the database.

                  現在我已經完全轉換到 MySQLi 并且我正在使用帶有綁定參數的準備好的查詢,我是否有效地消除了 SQL 注入攻擊的可能性?

                  Now that I've completely converted over to MySQLi and I'm using prepared queries with bound parameters, have I effectively eliminated the possibility of SQL injection attacks?

                  我說我不再需要了嗎

                  mysql_real_escape_string()?
                  

                  這是我的理解和我的一個項目的基礎:http://sourceforge.net/projects/mysqldoneright/files/Base/MysqlDoneRight-0.23.tar.gz/download

                  This is my understanding and the basis of a project of mine: http://sourceforge.net/projects/mysqldoneright/files/Base/MysqlDoneRight-0.23.tar.gz/download

                  這不是我想要出錯的事情,盡管現在我已經發布了它,它也可能影響其他人.

                  This is not something I want to get wrong though as now that I've released it, it could affect others as well.

                  所有用戶提供的輸入現在都將在 bind_parms 中結束.
                  準備階段提供的查詢是靜態的.

                  All user provided input will now end up in bind_parms.
                  The queries provided in the prepare phase are static.

                  推薦答案

                  事情沒那么簡單.您可以使用綁定參數而不是將應用程序變量插入到 SQL 表達式中來代替 文字值:

                  It's not so simple. You can use bound parameters instead of interpolating application variables into SQL expressions in place of literal values only:

                  $sql = "SELECT * FROM MyTable WHERE id = ".$_GET["id"]; // not safe
                  
                  $sql = "SELECT * FROM MyTable WHERE id = ?"; // safe
                  

                  但是,如果除了字面值之外,您還需要使查詢的一部分動態化怎么辦?

                  But what if you need to make part of the query dynamic besides a literal value?

                  $sql = "SELECT * FROM MyTable ORDER BY ".$_GET["sortcolumn"]; // not safe
                  
                  $sql = "SELECT * FROM MyTable ORDER BY ?"; // doesn't work!
                  

                  該參數將始終被解釋為一個值,而不是一個列標識符.您可以使用ORDER BY 'score' 運行查詢,這與ORDER BY score 不同,使用參數將被解釋為前者——常量字符串'score',而不是名為 score 的列中的值.

                  The parameter will always be interpreted as a value, not a column identifier. You can run a query with ORDER BY 'score', which is different from ORDER BY score, and using a parameter will be interpreted as the former -- a constant string 'score', not the value in the column named score.

                  因此,在很多情況下,您必須使用動態 SQL 并將應用程序變量插入到查詢中才能獲得想要的結果.在這些情況下,查詢參數幫不了你.您仍然必須保持警惕并進行防御性編碼以防止 SQL 注入缺陷.

                  So there are lots of cases where you have to use dynamic SQL and interpolate application variables into the query to get the results you want. In those cases, query parameters can't help you. You still have to be vigilant and code defensively to prevent SQL injection flaws.

                  沒有任何框架或數據訪問庫可以為您完成這項工作.您始終可以構建包含 SQL 注入缺陷的 SQL 查詢字符串,并且在數據訪問庫看到 SQL 查詢之前執行此操作.那么它應該如何知道什么是故意的,什么是缺陷?

                  No framework or data-access library can do this work for you. You can always construct a SQL query string that contains a SQL injection flaw, and you do this before the data-access library sees the SQL query. So how is it supposed to know what's intentional and what's a flaw?

                  以下是實現安全 SQL 查詢的方法:

                  Here are the methods to achieve secure SQL queries:

                  • 過濾輸入. 跟蹤插入到 SQL 查詢中的任何變量數據.使用輸入 filters 去除非法字符.例如,如果您需要一個整數,請確保輸入被限制為一個整數.

                  • Filter input. Trace any variable data that gets inserted into your SQL queries. Use input filters to strip out illegal characters. For instance, if you expect an integer, make sure the input is constrained to be an integer.

                  轉義輸出. 此上下文中的輸出可以是您發送到數據庫服務器的 SQL 查詢.您知道可以對值使用 SQL 查詢參數,但是列名呢?您需要一個用于標識符的轉義/引用函數,就像舊的 mysql_real_escape_string() 用于字符串值一樣.

                  Escape output. Output in this context can be the SQL query which you send to the database server. You know you can use SQL query parameters for values, but what about a column name? You need an escaping/quoting function for identifiers, just like the old mysql_real_escape_string() is for string values.

                  代碼審查.讓別人成為第二雙眼睛并檢查您的 SQL 代碼,以幫助您發現您忽略使用上述兩種技術的地方.

                  Code reviews. Get someone to be a second pair of eyes and go over your SQL code, to help you spot places where you neglected to use the above two techniques.

                  這篇關于PHP MySQLi 準備的帶有綁定參數的查詢是否安全?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  store_result() and get_result() in mysql returns false(mysql 中的 store_result() 和 get_result() 返回 false)
                  Call to undefined function mysqli_result::num_rows()(調用未定義的函數 mysqli_result::num_rows())
                  PHP Prepared Statement Problems(PHP 準備好的語句問題)
                  mysqli_fetch_array returning only one result(mysqli_fetch_array 只返回一個結果)
                  PHP MySQLi Multiple Inserts(PHP MySQLi 多次插入)
                  How do I make sure that values from MySQL keep their type in PHP?(如何確保 MySQL 中的值在 PHP 中保持其類型?)
                  <tfoot id='mJJ2L'></tfoot>
                  • <legend id='mJJ2L'><style id='mJJ2L'><dir id='mJJ2L'><q id='mJJ2L'></q></dir></style></legend>

                      <bdo id='mJJ2L'></bdo><ul id='mJJ2L'></ul>
                          <tbody id='mJJ2L'></tbody>

                          <small id='mJJ2L'></small><noframes id='mJJ2L'>

                          <i id='mJJ2L'><tr id='mJJ2L'><dt id='mJJ2L'><q id='mJJ2L'><span id='mJJ2L'><b id='mJJ2L'><form id='mJJ2L'><ins id='mJJ2L'></ins><ul id='mJJ2L'></ul><sub id='mJJ2L'></sub></form><legend id='mJJ2L'></legend><bdo id='mJJ2L'><pre id='mJJ2L'><center id='mJJ2L'></center></pre></bdo></b><th id='mJJ2L'></th></span></q></dt></tr></i><div class="ywlme8e" id='mJJ2L'><tfoot id='mJJ2L'></tfoot><dl id='mJJ2L'><fieldset id='mJJ2L'></fieldset></dl></div>

                          1. 主站蜘蛛池模板: 石英陶瓷,石英坩埚,二氧化硅陶瓷-淄博百特高新材料有限公司 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 首页_中夏易经起名网| 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 电线电缆厂家|沈阳电缆厂|电线厂|沈阳英联塑力线缆有限公司 | 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 紧急泄压人孔_防爆阻火器_阻火呼吸阀[河北宏泽石化] | 并离网逆变器_高频UPS电源定制_户用储能光伏逆变器厂家-深圳市索克新能源 | 成都中天自动化控制技术有限公司 | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | 手术室净化厂家-成都做医院净化工程的公司-四川华锐-15年特殊科室建设经验 | 湖南印刷厂|长沙印刷公司|画册印刷|挂历印刷|台历印刷|杂志印刷-乐成印刷 | 密度电子天平-内校-外校电子天平-沈阳龙腾电子有限公司 | 小型高低温循环试验箱-可程式高低温湿热交变试验箱-东莞市拓德环境测试设备有限公司 | 机制砂选粉机_砂石选粉机厂家-盐城市助成粉磨科技有限公司 | 上海办公室装修_上海店铺装修公司_厂房装潢设计_办公室装修 | 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 精密模具加工制造 - 富东懿| 直齿驱动-新型回转驱动和回转支承解决方案提供商-不二传动 | 天坛家具官网 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 自清洗过滤器-全自动自清洗过反冲洗过滤器 - 中乂(北京)科技有限公司 | 橡胶电子拉力机-塑料-微电脑电子拉力试验机厂家-江苏天源 | 打造全球沸石生态圈 - 国投盛世 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 2025黄道吉日查询、吉时查询、老黄历查询平台- 黄道吉日查询网 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 一航网络-软件测评官网 | 软文世界-软文推广-软文营销-新闻稿发布-一站式软文自助发稿平台 | 优考试_免费在线考试系统_培训考试系统_题库系统_组卷答题系统_匡优考试 | 网站制作优化_网站SEO推广解决方案-无锡首宸信息科技公司 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 航空铝型材,7系铝型材挤压,硬质阳*氧化-余润铝制品 | 高压负荷开关-苏州雷尔沃电器有限公司 | 焦作网 WWW.JZRB.COM| 水质监测站_水质在线分析仪_水质自动监测系统_多参数水质在线监测仪_水质传感器-山东万象环境科技有限公司 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 | 办公室家具_板式办公家具定制厂家-FMARTS福玛仕办公家具 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 高博医疗集团上海阿特蒙医院 | 检验科改造施工_DSA手术室净化_导管室装修_成都特殊科室建设厂家_医疗净化工程公司_四川华锐 |