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

避免PHP中代码注入的最佳方法

沈自珍
2023-03-14
问题内容

我的网站最近遭到了一个无辜的代码的攻击

<?php
  if ( isset( $ _GET['page'] ) ) {
    include( $ _GET['page'] . ".php" );
  } else {
    include("home.php");
  }
?>

那里没有SQL调用,因此我不担心SQL注入。但是,显然,SQL并不是唯一的注入方式。

该网站提供了解释以及避免代码注入的一些示例:http
:
//www.theserverpages.com/articles/webmasters/php/security/Code_Injection_Vulnerabilities_Explained.html

您如何保护该代码免于注入代码?


问题答案:

使用白名单,并确保页面在白名单中:

  $whitelist = array('home', 'page');

  if (in_array($_GET['page'], $whitelist)) {
        include($_GET['page'].'.php');
  } else {
        include('home.php');
  }


 类似资料:
  • 问题内容: 从PHP文件中删除注释的最佳方法是什么? 我想做一些与strip-whitespace()类似的事情-但它也不应该删除换行符。 例如: 我要这个: 成为: (尽管如果在删除注释的地方仍然留有空行,那是不可能的)。 由于可能需要保留嵌入式html,因此这可能是不可能的-那是什么导致了google上出现的问题。 问题答案: 我会使用tokenizer。这是我的解决方案。它应该在PHP 4和

  • 问题内容: 我有一个包含3列的表格- id(pk),pageId(fk),名称。我有一个PHP脚本,它将大约5000条记录转储到表中,其中大约一半是重复的,具有相同的pageId和名称。pageId和名称的组合应该是唯一的。当我遍历php中的脚本时,防止重复项被保存到表中的最佳方法是什么? 问题答案: 第一步是在表上设置唯一键: 然后,当有重复项时,您必须决定要做什么。你应该: 忽略它? 覆盖先前

  • 什么是SQL注入 SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常见的一种安全漏洞。可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至有可能获取数据库乃至系统用户最高权限。 而造成SQL注入的原因是因为程序没有有效过滤用户的输入,使攻击者成功的向服务器提交恶意的SQL查询代码,程序在接收后错误的将攻击者的输入作为查询语句的

  • 问题内容: 我使用Java在Selenium WebDriver中编写了一些测试用例,并在网格(集线器和多个节点)上执行它们。我注意到有一些测试案例由于导致失败。避免并确保始终找到该元素的最佳且可靠的方法是什么? 问题答案: 您永远无法确定会找到该元素,实际上这是功能测试的目的- 告诉您页面上是否有任何更改。但有一两件事肯定是有帮助是添加等待这往往导致元素像

  • 问题内容: 我认为这个问题经常出现在Web应用程序开发中。但是,我将尝试详细解释我的问题。 我想知道如何纠正这种行为,例如,当我有如下代码块时: 提交表单后,数据将插入数据库中,并产生消息 “完成操作” 。然后,如果刷新页面,则数据将再次插入数据库。 如何避免这个问题?任何建议将不胜感激:) 问题答案: 创建动作后不要显示响应;操作完成后重定向到另一个页面。如果有人刷新,则他们刷新的是您重定向到的

  • 让我们看一下使用两种不同的方式去计算单词的个数,第一种方式使用 reduceByKey 另外一种方式使用 groupByKey: val words = Array("one", "two", "two", "three", "three", "three") val wordPairsRDD = sc.parallelize(words).map(word => (word, 1)) val