php特性

简介: 本文介绍了PHP的一些特性与安全问题。在Windows系统中,`index.php.`与`index.php`等效,但Linux系统不支持。HTTP协议在Windows下对`http://`和`http:\\\\`处理相同。PHP中可以通过`$_GET['$work']`获取变量,使用data协议如`data://text/plain;base64;64编码的内容`传输数据,或用`php://filter`过滤查看文件源码。

php特性

Windows系统中index.php.等同于index.php Linux系统不行
Windows中 http:// http:\\都一样

c=_GET['$work'] a=‘hello,world’ b=''

?work=hhello,worldello,word;

(get 数据流)?abc=data://text/plain;base64;64编码的内容 data协议

file=php://filter/convert.base64-encode/resource=flag.php filter协议查看flag.php的源码

两个操作都要执行时用&

php://filter/iconv.UCS-4.UCS-2/resourse=flag.php 输入编码和输出编码

元素/代码 描述
$_SERVER['PHP_SELF'] 返回当前执行脚本的文件名。
$_SERVER['GATEWAY_INTERFACE'] 返回服务器使用的 CGI 规范的版本。
$_SERVER['SERVER_ADDR'] 返回当前运行脚本所在的服务器的 IP 地址。
$_SERVER['SERVER_NAME'] 返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。
$_SERVER['SERVER_SOFTWARE'] 返回服务器标识字符串(比如 Apache/2.2.24)。
$_SERVER['SERVER_PROTOCOL'] 返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。
$_SERVER['REQUEST_METHOD'] 返回访问页面使用的请求方法(例如 POST)。
$_SERVER['REQUEST_TIME'] 返回请求开始时的时间戳(例如 1577687494)。
$_SERVER['QUERY_STRING'] 返回查询字符串,如果是通过查询字符串访问此页面。
$_SERVER['HTTP_ACCEPT'] 返回来自当前请求的请求头。
$_SERVER['HTTP_ACCEPT_CHARSET'] 返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1)
$_SERVER['HTTP_HOST'] 返回来自当前请求的 Host 头。
$_SERVER['HTTP_REFERER'] 返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。
$_SERVER['HTTPS'] 是否通过安全 HTTP 协议查询脚本。
$_SERVER['REMOTE_ADDR'] 返回浏览当前页面的用户的 IP 地址。
$_SERVER['REMOTE_HOST'] 返回浏览当前页面的用户的主机名。
$_SERVER['REMOTE_PORT'] 返回用户机器上连接到 Web 服务器所使用的端口号。
$_SERVER['SCRIPT_FILENAME'] 返回当前执行脚本的绝对路径。
$_SERVER['SERVER_ADMIN'] 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。
$_SERVER['SERVER_PORT'] Web 服务器使用的端口。默认值为 “80”。
$_SERVER['SERVER_SIGNATURE'] 返回服务器版本和虚拟主机名。
$_SERVER['PATH_TRANSLATED'] 当前脚本所在文件系统(非文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME'] 返回当前脚本的路径。
$_SERVER['SCRIPT_URI'] 返回当前页面的 URI。

phpXSS

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

现在,如果用户进入的是地址栏中正常的 URL:"http://www.example.com/test_form.php",上面的代码会转换为:

<form method="post" action="test_form.php">

到目前,一切正常。

不过,如果用户在地址栏中键入了如下 URL:

http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E

在这种情况下,上面的代码会转换为:

test_form.php/"><script>alert('hacked')</script>
<form method="post" action="test_form.php"/><script>alert('hacked')</script>

这段代码加入了一段脚本和一个提示命令。并且当此页面加载后,就会执行 JavaScript 代码(用户会看到一个提示框)。这仅仅是一个关于 PHP_SELF 变量如何被利用的简单无害案例。

<?php
// 定义变量并设置为空值
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data) {
   
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>
目录
相关文章
|
15天前
|
存储 测试技术 API
PHP 7.4 新特性及性能优化探究
随着互联网和移动应用的不断发展,PHP作为一种流行的服务器端脚本语言,始终保持着其重要性。本文将介绍PHP 7.4的新特性,包括类型属性、预加载、扩展改进等,并深入探讨这些新特性对PHP性能的影响,以及如何优化PHP 7.4代码以提升性能。
|
15天前
|
PHP 调度 开发者
探索PHP新特性:协程编程的崛起
PHP作为一种流行的服务器端脚本语言,近年来不断发展壮大。本文将重点探讨PHP中新兴的技术领域——协程编程,介绍其原理、优势以及在实际项目中的应用场景,帮助读者更好地理解并运用这一技术。
|
3天前
|
安全 Java 编译器
深入理解PHP 8.0新特性及其对开发的影响Java中的多线程编程:从理论到实践
【5月更文挑战第27天】在这篇文章中,我们将详细探讨PHP 8.0的新特性以及它们如何影响开发者的工作流程。我们将深入研究这些新特性,包括JIT编译器,联合类型,命名参数,以及更多的错误处理机制。我们还将讨论这些新特性如何提高代码的可读性和性能,以及它们如何改变我们编写和维护PHP应用程序的方式。 【5月更文挑战第27天】在现代计算机科学中,多线程编程是一个重要的概念,它允许多个线程在同一时间内运行,从而提高了程序的效率和性能。本文将深入探讨Java中的多线程编程,包括其理论基础,实现方法,以及一些常见的问题和解决方案。我们将通过实例来理解如何创建和管理线程,以及如何使用Java的并发工具来
|
9天前
|
安全 编译器 PHP
深入理解PHP 8.0的新特性与性能优化
【5月更文挑战第21天】 随着PHP 8.0的发布,这一流行的服务器端脚本语言迎来了多项令人瞩目的新特性和性能提升。本文将深入探讨PHP 8.0中的JIT编译器、联合类型、名称参数、匹配表达式等关键新特性,并分析这些改进如何影响应用程序的性能及开发体验。我们将通过代码示例和性能测试数据,展示PHP 8.0如何在现代Web开发中保持其竞争力。
|
2天前
|
安全 编译器 PHP
深入PHP 8.0:新特性与性能优化
【5月更文挑战第28天】 在这篇文章中,我们将探讨PHP 8.0的新特性以及如何通过这些新特性进行性能优化。我们将详细介绍JIT编译器、联合类型、名称参数、匹配表达式等新特性,并通过实例代码展示如何使用这些新特性来提高PHP应用程序的性能。
|
9天前
|
安全 编译器 API
深入PHP 8.0:新特性与性能优化
【5月更文挑战第21天】 随着PHP 8.0的发布,这门流行的服务端脚本语言迎来了一系列创新的特性和显著的性能提升。本文将探讨PHP 8.0中的几个关键新特性,包括JIT编译器、联合类型、名称参数和匹配表达式,并分析这些更新如何改善开发体验和运行效率。我们还将通过示例代码来揭示如何利用这些新工具来编写更简洁、高效的PHP应用。
|
12天前
|
编译器 数据处理 PHP
深入理解PHP 8.0的新特性及性能优化策略
【5月更文挑战第18天】本文将详细介绍PHP 8.0的新特性以及如何利用这些新特性进行性能优化。我们将从JIT编译器、联合类型、名称参数和匹配表达式等方面进行深入探讨,并通过实例分析如何在实际项目中应用这些新特性来提高代码的执行效率。
|
15天前
|
编译器 PHP 开发者
深入理解PHP 8.0的新特性及实践应用
【5月更文挑战第14天】在这篇文章中,我们将深入探讨PHP 8.0的新特性及其在实际开发中的应用。我们将详细介绍JIT编译器、联合类型、名称参数、匹配表达式等新特性,并通过实例代码演示如何利用这些新特性提高开发效率和代码质量。
|
15天前
|
PHP
PHP 7.4中新增特性的探索与实践
【5月更文挑战第12天】本文主要探讨了PHP 7.4中的一些新特性,包括箭头函数、预加载优化、数组表达式间接访问等。通过对这些新特性的深入理解和实践应用,可以帮助我们编写出更高效、更简洁的代码。
|
15天前
|
安全 测试技术 PHP
掌握现代Web开发:PHP 8的新特性与最佳实践
【5月更文挑战第5天】 在当今快速发展的网络世界中,PHP作为一种流行的服务器端脚本语言,持续地演化着。最新的PHP 8版本引入了一系列令人兴奋的新特性和性能改进,为开发者提供了更加强大和灵活的工具。本文将深入探讨PHP 8中的新特性,包括联合类型、名称参数、匹配表达式等,并分享一些最佳实践,帮助开发者提高代码质量,优化性能,并确保安全性。通过这些实用技巧和示例,您将能够构建更高效、更安全的PHP应用程序。