💉PHP用户可控输入速查表
来自用户可控的输入
变量/常量/函数/等 | 描述 |
---|---|
$_SERVER | 包含 服务器信息 环境变量 用户传入的http头和uri路径等信息 |
$_GET $HTTP_GET_VARS | 包含 用户传入的URL参数 |
$_POST $HTTP_POST_VARS | 包含 用户传入的POST BODY的参数 (当 HTTP头中Content-Type 值为 application/x-www-form-urlencoded 或 multipart/form-data时才会被传入) |
$_FILES $HTTP_POST_FILES | 包含 用户上传文件信息 文件内容 原文件名 临时文件名 大小 等信息 |
$_COOKIE $HTTP_COOKIE_VARS | 包含 用户传入的HTTP头中的Cookies kv值 |
$_REQUEST | 同时包含 $_GET $_POST $_COOKIE |
php://input $HTTP_RAW_POST_DATA | 包含 用户POST请求中BODY 的完整数据 常见用法 file_get_contents('php://input'); |
apache_request_headers() getallheaders() | 包含 用户传入的http头 (Apache ONLY) |
下方为PHP框架常见输入 | |
Request::instance()->get(); input('get.'); input('变量类型.变量名/修饰符') 详见官方文档 | 获取用户传入的URL参数 可用过滤器和类型转换 THINKPHP框架5 例子:获取url参数中的id值 Request::instance()->get('id'); 调用时如不传入参数默认获取全部 Request::instance()->get(); input('get.id'); 调用时如传入get.则获取全部 input('get.'); input('get.id/d');// 强制变量转换为整型 Request::instance()->get('name','','htmlspecialchars'); //过滤器 input('get.name/s');// 强制转换变量为字符串 input('get.ids/a');// 强制变量转换为数组 默认为/s |
Request::instance()->post(); input('post.'); | 获取用户传入的POST参数 THINKPHP框架5 例子:获取post请求body中的name值 Request::instance()->post('name'); input('post.name'); 同get |
Request::instance()-> param(); input('param.'); input(''); | 自动判断用户提交方法(POST GET PUT)获取参数 THINKPHP框架5 用法同get 除此之外 可直接调用input('');获取全部参数 或使用 input('name');获取单个参数 注:input方法默认获取param |
Request::instance()->request(); input('request.'); | 用法同get 获取$_REQUEST 变量 THINKPHP框架5 |
Request::instance()->server(); input('server.'); | 用法同get 获取$_SERVER 变量THINKPHP框架5 |
Request::instance()->cookie(); input('cookie.'); Cookie::get('name'); cookie('name'); | 用法同get 获取$_COOKIE 变量THINKPHP框架5 |
Request::instance()->header(); input('header.'); | 用法同get 获取用户传入的HTTP头THINKPHP框架5 |
Request::instance()->file(); | 用法同get 获取$_FILES 变量THINKPHP框架5 |
I('变量类型.变量名/修饰符',['默认值'],['过滤方法或正则']) | 获取变量 THINKPHP框架3.* 例子 I('get.id'); I('get.'); 使用方法同input |
request(); | 实例化request对象THINKPHP框架5 例$req=request(); 相当于$req=Request::instance() 这种使用方法比较常见 还可以获取用户传入的请求信息 可将前面的Request::instance()直接替换成request() 例 request()->post(); |
{$Request.变量类型.变量名} | THINKPHP框架 在模板中获取参数 |
路由传入值 (Action参数绑定) namespace Home\Controller; use Think\Controller; class BlogController extends Controller { public function read($id) { echo 'id='.$id; } public function archive($year='2013',$month='01') {echo 'year='.$year.'&month='.$month;}} | THINKPHP框架 (Action参数绑定) 通过路由传入 /index.php/Home/Blog/read/id/5 /index.php/Home/Blog/archive/year/2013/month/11 ?c=Blog&a=read&id=5 ?c=Blog&a=archive&year=2013&month=11 |
Request::instance() 其他用户变量 | https://www.kancloud.cn/manual/thinkphp5/158834 THINKPHP框架5 见官方文档 略 |
$this->input->post() $this->input->get() $this->input->cookie() $this->input->server() $this->input->user_agent(); $this->input->request_headers(); $this->input->get_request_header('some-header', TRUE); $this->input->ip_address(); $this->input->raw_input_stream; $this->input->input_stream('key'); (POST BODY) | Codeigniter2/3框架 $this->input->input_stream('key', TRUE); // XSS 过滤器开关 $this->input->cookie('some_cookie'); 3.*官方文档 2.*官方文档 文件上传 https://codeigniter.org.cn/userguide2/libraries/file_uploading.html https://codeigniter.org.cn/userguide3/libraries/file_uploading.html?highlight=%E6%96%87%E4%BB%B6#id5 |
$request->getGet() $request->getPost() $request->getServer() $request->getCookie() $request->getPostGet()- 先 $_POST, 后 $_GET $request->getGetPost()- 先 $_GET, 后 $_POST $request->getJSON(); $this->request->getFiles(); $this->request->getFile('123'); 获取post body json数据 $request->getRawInput() 同php://input | |
$this->request->getQuery('page'); (GET参数) $this->request->getQueryParams(); 全部get参数 $this->request->getData('title'); (POST 参数) $this->request->getParsedBody(); 全部post参数 $this->request->getUploadedFile('attachment'); $jsonData=$this->request->input('json_decode'); $request->getUploadedFiles(); $data=$this->request->input('Cake\Utility\Xml::build',['return'=>'domdocument']); $userAgent=$this->request->getHeaderLine('User-Agent');// Get an array of all values.$acceptHeader=$this->request->getHeader('Accept'); $this->request->getCookie('remember_me'); | Cakephp 4.* 框架 文件上传 https://book.cakephp.org/4/en/controllers/request-response.html#file-uploads |
$request= Yii::$app->request; $get= $request->get(); // 等价于: $get = $_GET; $id= $request->get('id'); // 等价于: $id = isset($_GET['id']) ? $_GET['id'] : null; $id= $request->get('id', 1); // 等价于: $id = isset($_GET['id']) ? $_GET['id'] : 1; $post= $request->post(); // 等价于: $post = $_POST; $name= $request->post('name'); // 等价于: $name = isset($_POST['name']) ? $_POST['name'] : null; $name= $request->post('name', ''); // 等价于: $name = isset($_POST['name']) ? $_POST['name'] : ''; $request= Yii::$app->request; // 返回所有参数 $params= $request->bodyParams; // 返回参数 "id" $param= $request->getBodyParam('id'); // $headers 是一个 yii\web\HeaderCollection 对象 $headers= Yii::$app->request->headers; // 返回 Accept header 值 $accept= $headers->get('Accept'); if($headers->has('User-Agent')) { /* 这是一个 User-Agent 头 */} $userHost= Yii::$app->request->userHost; $userIP= Yii::$app->request->userIP; 来自 <https://www.yiichina.com/doc/guide/2.0/runtime-requests> | Yii 2.0框架 |
$name=$request->input('name'); 所有请求 $name=$request->query('name'); get url参数 $query=$request->query(); $value=$request->cookie('name'); Use Illuminate\Support\Facades\Cookie; $value=Cookie::get('name'); $file=$request->file('photo'); $file=$request->photo; 来自 <https://learnku.com/docs/laravel/8.x/requests/9369> | Laravel 框架 |
最后更新于