XSS
XSS又叫CSS(cross-site script),跨站脚本攻击。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的
办法:htmlspecialchars()
htmlspecialchars()
把一些预定义的字符转换为html实体。
PHP包含
include和require
include与require语句用于在执行流中插入卸载其他文件中的有用的代码。
include和require除了处理错误的方式不同之外,在其他地方都是相同的
- require生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行
- include生成一个警告(E_WARNING),在错误发生后脚本会继续执行
include_once
及require_once
只引入一次,且使用后失效,多次引入也只能使用一次
Cookie
cookie常用于识别用户。是一种服务器留在用户计算机上的小文件,当同一台计算机通过浏览器请求页面时,这台计算机将会发送cookie
创建Cookie:setcookie(name,value,expire,path,domain)
取回cookie的值:$_COOKIE
使用 isset()
函数确认是否已经设置了cookie
Session
session变量用于存储关于用户会话(session)的信息,或者更改用户会话的设置。
session变量存储单一用户的信息,并对于应用程序中所有页面都是可用的。
session通过在服务器生存储用户信息以便随后使用,会话信息是临时的,在用户离开网站后将被删除。
session工作机制:为每个访客创建一个唯一的id(UID),并基于这个UID来存储变量。UID存储在cookie中,或者通过URL进行传导
开启session:session_start()
存储和获得session变量:$_SESSION
销毁session:unset()
或者session_destroy()
(session_destroy彻底重置session,将失去所有的session数据)
错误处理
基本的错误处理:使用die()函数
创建自定义错误处理器
语法:
error_function(error_level,error_message,error_file,error_line,error_context)
参数 | 描述 |
---|---|
error_level | 必需。为用户定义的错误规定错误报告级别 |
error_message | 必需。为用户定义的错误规定错误消息 |
error_file | 可选。规定错误发声的文件名 |
error_line | 可选。规定错误发生的行号 |
error_context | 可选。规定一个数组,包含了当错误发生时在用的每个变量和值 |
设置错误处理程序
PHP的默认错误处理程序是内建的错误处理程序。可以修改错误处理程序,使其仅应用到某些错误,这样脚本就能以不同的方式处理不同的错误。set_error_handler(eorr_name,error_level)
错误记录
默认情况下,根据在php.ini中的error_log配置,使用error_log()函数,可以向指定文件或远程目的地发送错误记录
Exception
异常处理用于在指定的错误发生时改变脚本的正常流程。
当异常发生时,通常会:
- 当前代码状态被保存
- 代码执行被切换到预定义(自定义)的异常处理器函数
- 根据情况,处理其也会从保存的代码状态重新开始执行代码,种植脚本执行,或从代码中另外的位置继续执行脚本
注意:异常应该仅仅在错误情况下使用,而不应该用在一个指定的点跳转到代码的另一个位置
过滤器
过滤器用于验证和过滤来自非安全来源的数据
测试、验证和过滤用户输入或自定义数据是任何Web应用程序的重要组成部分
为什么使用过滤器?
几乎所有的Web应用程序都以来外部的输入。这些数据通常来自用户或其他应用程序。通过使用过滤器,能够保证应用程序获取正确的输入类型。
什么是外部数据?
- 来自表单的输入数据
- Cookies
- Web services data
- 服务器变量
- 数据库查询结果
函数和过滤器
过滤变量,函数:
filter_var()
通过一个指定的过滤器来过滤单一的变量filter_var_array()
通过相同或不同的顾虑其来过滤多个变量filter_input
获取一个输入变量,并对它进行过滤filter_input_array
获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤
Validating 和 Sanitizing
Validating过滤器:
- 用于验证用户输入
- 严格的格式规则
- 成功则返回预期的类型,否则返回false
Sanlitizing过滤器:
- 用于允许或禁止字符串中指定的字符
- 无数据格式规则
- 始终返回字符串