爱问知识人 爱问教育 医院库

php,mysql

首页

php,mysql

如何防止sql注入

提交回答
好评回答
  • 2018-02-11 19:20:42
    这个说得太多了,首先必须用单引号,然后还得对php配置文件进行配置,还有全局变量的写法等,你如果要这方面的东东,我有教程, :962685804

    1***

    2018-02-11 19:20:42

其他答案

    2018-02-11 17:20:42
  •   引发 SQL 注入攻击的主要原因,是因为以下两点原因:
      1。 php 配置文件 php。ini 中的 magic_quotes_gpc选项没有打开,被置为 off
      2。 开发者没有对数据类型进行检查和转义
      不过事实上,第二点最为重要。
      我认为, 对用户输入的数据类型进行检查,向 MYSQL 提交正确的数据类型,这应该是一个 web 程序员最最基本的素质。但现实中,常常有许多小白式的 Web 开发者忘了这点, 从而导致后门大开。 如何防止 PHP SQL 注入攻击   如何防止 php sql 注入攻击?我认为最重要的一点,就是要对数据类型进行检查和转义。
      总结的几点规则如下: php。ini 中的 display_errors 选项,应该设为 display_errors = off。这样 php 脚本出错之后,不会在 web 页面输出错误,以免让攻击者分析出有作的信息。 调用 mysql_query 等 mysql 函数时,前面应该加上 @,即 @mysql_query(。
      。。),这样 mysql 错误不会被输出。同理以免让攻击者分析出有用的信息。另外,有些程序员在做开发时,当 mysql_query出错时,习惯输出错误以及 sql 语句,例如: $t_strSQL = "SELECT a from b。。。。
      "; if ( mysql_query($t_strSQL) ) { // 正确的处理 } else { echo "错误! SQL 语句:$t_strSQL \r\n错误信息"。mysql_query(); exit; }   这种做法是相当危险和愚蠢的。
      如果一定要这么做,最好在网站的配置文件中,设一个全局变量或定义一个宏,设一下 debug 标志: 全局配置文件中: define("DEBUG_MODE",0); // 1: DEBUG MODE; 0: RELEASE MODE //调用脚本中: $t_strSQL = "SELECT a from b。
      。。。"; if ( mysql_query($t_strSQL) ) { // 正确的处理 } else { if (DEBUG_MODE) echo "错误! SQL 语句:$t_strSQL \r\n错误信息"。mysql_query(); exit; } 对提交的 sql 语句,进行转义和类型检查。
      

    小***

    2018-02-11 17:20:42

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 166-185
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):