一尘不染

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

php

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

<?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

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


阅读 280

收藏
2020-05-29

共1个答案

一尘不染

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

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

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