当前位置: 首页 > 面试题库 >

PHP mysql注入保护

胡景焕
2023-03-14
问题内容

我写了这个简短的函数来防止my_sql注入,因为它的重要性,我只想与其他人仔细检查这个函数是否可以按我的预期工作。

foreach($_REQUEST as $key => $value) {          
    $_REQUEST[$key] = stripslashes($value);
    $_REQUEST[$key] = mysql_real_escape_string($_REQUEST[$key]);
}

问题答案:

好吧,您使用stripslashes()是因为magic_quotes_gpc设置了吗?因此,此代码仅在magic_quotes_gpc设置时才有效!我建议您关闭它,不要使用strislashes()调用。

但请注意,没有什么比“普遍消毒”。让我们称其为 quota ,因为这就是全部。

引用时, 总是为 某些特定输出 引用文本 ,例如:

  1. mysql查询的字符串值
  2. like mysql查询表达式
  3. HTML代码
  4. json
  5. mysql正则表达式
  6. PHP正则表达式

对于每种情况,您都需要不同的引用,因为每种用法都存在于不同的语法上下文中。这也意味着 不应在PHP的输入处 进行
引用,而应在特定的输出处进行引用 !这就是诸如此类magic_quotes_gpc的功能被破坏的原因(始终确保将其关闭!!!)。

那么,在这些特殊情况下,将使用哪种方法进行报价?(随时纠正我,可能会有更多现代方法,但这些方法对我有用)

  1. mysql_real_escape_string($str)
  2. mysql_real_escape_string(addcslashes($str, "%_"))
  3. htmlspecialchars($str)
  4. json_encode()-仅适用于utf8!我将函数用于iso-8859-2
  5. mysql_real_escape_string(addcslashes($str, '^.[]$()|*+?{}')) -在这种情况下,您不能使用preg_quote,因为反斜杠将被转义两次!
  6. preg_quote()


 类似资料:
  • 问题内容: 我想我会从您认为可以基本上消除SQL注入可能性的选项中获得您的意见(我认为)。 当前,我有我的管理员帐户,该帐户显然可以为我提供数据库的完整命令(更改,删除等)。我将拥有一个PHP使用的帐户,该帐户只能访问SELECT,UPDATE,DELETE,INSERT。如何为每个操作设置一个用户,然后仅在mysql_query语句中引用连接ID呢- 现在很明显,这将给服务器带来更多压力,本质上

  • 我已经尝试将我的应用程序部署到Tomcat 6与Metro/泽西和Glassfish 3.1.2,但是访问WebServiceContext资源总是会导致空指针异常,除非我使用自动生成的Glassfish测试门户测试应用程序。 下面是我写的一个简单的测试方法来验证这一点: 下面是相应的web-xml(主要由Eclipse自动生成): 最有趣的是,当我通过访问Glassfish生成的URL来测试Te

  • 问题内容: public static bool TruncateTable(string dbAlias, string tableName) { string sqlStatement = string.Format(“TRUNCATE TABLE {0}”, tableName); return ExecuteNonQuery(dbAlias, sqlStatement) > 0; } 问题

  • 理解DLL 首先我们需要知道我们在启动一个程序的时候并没有把所有的需要用到的数据或者文件运行起来,而是只运行了关键部分,那么当我们需要调用到某一功能时再通过DLL来动态链接,不需要时就可以卸载,使得程序不显得臃肿。 DLL注入是什么 DLL注入就是将代码插入/注入到正在运行的进程中的过程。我们注入的代码是动态链接库(DLL)的形式。为什么可以做到这一点?因为DLL(如UNIX中的共享库)是在运行时

  • 接口说明 该接口已经废弃,请使用【单体化、标绘、压平 -> GEOJSON上传】接口 如果需要标识模型上某个位置信息,可以通过调用该接口,来记录标识的位置 可以设置的内容有名称、位置信息以及标注图标和字体颜色 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/marker/1.0.0/add 是否需要登录 是 请求字段说明

  • 问题内容: 防止MySQL注入的最佳方法是什么?我应该注意哪些弱点? 我知道这是什么,但我真的不知道自己可能有多脆弱。尽管我已经采取了(我认为是)保护自己和数据库的步骤。 有什么肯定的方法可以阻止某人? 顺便说一句…我用PHP写的:) 问题答案: 使用准备好的语句,而不是混合使用语句和实际有效负载数据。 看到 http://dev.mysql.com/tech-resources/articles