这几天要个同事写php的程序,就开始学习了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.)。
$_SERVER['SERVER_PROTOCOL'] 返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。
$_SERVER['REQUEST_METHOD'] 返回访问页面使用的请求方法(例如 POST)。
$_SERVER['REQUEST_TIME'] 返回请求开始时的时间戳(例如 )。
$_SERVER['QUERY_STRING'] 返回查询字符串,如果是通过查询字符串访问此页面。
$_SERVER['HTTP_ACCEPT'] 返回来自当前请求的请求头。
$_SERVER['HTTP_ACCEPT_CHARSET'] 返回来自当前请求的 Accept_Charset 头( 例如 utf-,ISO--)
$_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 服务器使用的端口。默认值为 “”。
$_SERVER['SERVER_SIGNATURE'] 返回服务器版本和虚拟主机名。
$_SERVER['PATH_TRANSLATED'] 当前脚本所在文件系统(非文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME'] 返回当前脚本的路径。
$_SERVER['SCRIPT_URI'] 返回当前页面的 URI。

在使用$_SERVER["PHP_SELF"]很容易攻击者造成反射型XSS,

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

正常会转化为:

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

黑客在URL中输入:

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

这样PHP获取会变成:

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

解决办法:

使用

htmlspecialchars()

什么是 htmlspecialchars() 函数?
htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 &lt; 和 &gt; 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。

在用户提交该表单时,我们还要做两件事:

  1. (通过 PHP trim() 函数)去除用户输入数据中不必要的字符(多余的空格、制表符、换行)
  2. (通过 PHP stripslashes() 函数)删除用户输入数据中的反斜杠(\)

最新文章

  1. java 获取中文字符的首字母
  2. Cosh.1
  3. MongoDB数据库的简介及安装
  4. sql 之CONCAT用法
  5. LeetCode——Add Two Numbers
  6. 怎么进行robot检測
  7. 关于java mail 发邮件的问题总结(转)
  8. 自定义连接池java.lang.ClassCastException: com.sun.proxy.$Proxy4 cannot be cast to java.sql.Connection
  9. linux环境下Vim的配置
  10. Eclipse中tomcat配置
  11. 各种jar包
  12. 安卓界面之Toolbar+tablayout+viewpager仿WhatsApp界面样式
  13. Android学习之基础知识四-Activity活动5讲(Activity的生命周期)
  14. Linux线程池的实现
  15. QTimer的一些注意事项和探索
  16. SpringMVC系列(六)处理模型数据
  17. rank() over,dense_rank(),row_number() 的区别
  18. Js基础知识7-JavaScript所有内置对象属性和方法汇总
  19. 常见的Javascript报错及解决方案
  20. cf490 C. Hacking Cypher(无语)

热门文章

  1. java 性能优化:35 个小细节,让你提升 java 代码的运行效率
  2. Redhat 7 或者 CentOS 7 密码破解
  3. 生产/消费 发送和接收消息---基于kombu和redis交互
  4. linux学习第一天
  5. 所有的cursor图标
  6. js 复选框 全选都选 如果某一个子复选框没选中 则全选按钮不选中
  7. Magento-找出没有图片的产品
  8. New Concept English 1-10
  9. hdu 3839 Ancient Messages (dfs )
  10. 二十三、Java基础--------网络编程