Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
内部重定向对客户端php可见吗_Php_Http_Cakephp_Redirect - Fatal编程技术网

内部重定向对客户端php可见吗

内部重定向对客户端php可见吗,php,http,cakephp,redirect,Php,Http,Cakephp,Redirect,假设用户打开一个页面(主要是将表单提交给)page1.php,然后在该文件中,经过一些操作后,会重定向到pagepage\u internal.php,其中会检查一些条件,最后会重定向到page2.php或page3.php。因此,用户最初请求一个页面page1.php,最后到达page2.php或page3.php,他实际上看不到page\u internal.php,但客户端是否可以看到该重定向?例如,假设我使用不安全的http协议,如果在我的page1.php文件中重定向到 page_in

假设用户打开一个页面(主要是将表单提交给)
page1.php
,然后在该文件中,经过一些操作后,会重定向到page
page\u internal.php
,其中会检查一些条件,最后会重定向到
page2.php
page3.php
。因此,用户最初请求一个页面
page1.php
,最后到达
page2.php
page3.php
,他实际上看不到
page\u internal.php
,但客户端是否可以看到该重定向?例如,假设我使用不安全的
http
协议,如果在我的
page1.php
文件中重定向到

page_internal.php?q=some_sensitive_data
某些敏感数据是否可以被客户端看到(被客户端访问),或者内部请求是否“发生在服务器端”,并且只有最后一页被发送到浏览器。对于Page1、2和3,安全性并不重要,重要的是一个内部重定向

更新

好吧,让我们暂时忘记提交,简单地说

  • 1) 用户在浏览器中打开page1.php
  • 2) 在该页面的代码中,我重定向到
    page\u internal.php?q=一些敏感数据
  • 3) 在 page_internal.php,检查我将用户重定向到的一些条件 第3页或第4页
  • 4) 所有这些都是通过http、qsn完成的:客户端可以看到一些敏感的数据吗
更新

qsn2:如何在不使用cakephp中的会话的情况下处理此部分


谢谢

如果您通过
标题('Location:…/page\u internal.php')
重定向,那么您的重定向将对客户端可见。根据服务器的速度,url只会很快显示在url中

但是任何浏览历史记录,即Chrome开发工具都会正常记录对
page_internal.php
的调用


有些框架允许内部处理请求,通过内部转发到请求处理程序,而不是强制客户机发出另一个请求:

使用CakePHP中的dispatcher来使用内部请求:

$dispatcher = new Dispatcher(); 
$request = new CakeRequest('/pages/internal'); 
$request->data = array('q' => 'some_sensitive_data'); 
$response = new CakeResponse(); 
$dispatcher->dispatch( $request, $response ); 

同样可以在Zend框架中实现:

$this->forward(
  'action', 
  'controller', 
  'module', 
  array(
    'q' => 'some_sensitive_data'
  )
);

如果您通过
标题('Location:…/page\u internal.php')
重定向,那么您的重定向将对客户端可见。根据服务器的速度,url只会很快显示在url中

但是任何浏览历史记录,即Chrome开发工具都会正常记录对
page_internal.php
的调用


有些框架允许内部处理请求,通过内部转发到请求处理程序,而不是强制客户机发出另一个请求:

使用CakePHP中的dispatcher来使用内部请求:

$dispatcher = new Dispatcher(); 
$request = new CakeRequest('/pages/internal'); 
$request->data = array('q' => 'some_sensitive_data'); 
$response = new CakeResponse(); 
$dispatcher->dispatch( $request, $response ); 

同样可以在Zend框架中实现:

$this->forward(
  'action', 
  'controller', 
  'module', 
  array(
    'q' => 'some_sensitive_data'
  )
);

使用重定向或任何其他形式的客户端控制机制将敏感或其他数据从服务器的一个点传输到另一个点既不安全,也没有必要

您可以使用客户端的会话在服务器端完全持久化这些信息


这并不意味着数据必须特定地属于会话,会话中的某些内容可以指导服务器查找什么,例如数据库表的ID,或文件名。

使用重定向或任何其他形式的客户端控制机制将敏感或其他数据从服务器的一个点传输到另一个点既不安全也不必要

您可以使用客户端的会话在服务器端完全持久化这些信息


这并不意味着数据必须特定地属于会话,会话中的某些内容可以指导服务器查找什么,例如数据库表的ID或文件名。

客户端无法看到服务器上附加的内容。 如果您只是在脚本之间转发动作,那么从外部看是看不见的

客户端只看到重定向。ie:返回的页面与请求的页面不同

他看到他的请求:get page1.php

以及您的响应:位置:

  • 向前在脚本之间:从外部不可见
  • 在页面之间重定向从外部可见
编辑:

看到你在编辑解释你的过程,你需要的不是转发,而是知道如何跟踪敏感数据

如评论中所述,会议就是针对这一点进行的。只有服务器才能看到这些数据


问另一个问题。

客户端看不到服务器上附加的内容。 如果您只是在脚本之间转发动作,那么从外部看是看不见的

客户端只看到重定向。ie:返回的页面与请求的页面不同

他看到他的请求:get page1.php

以及您的响应:位置:

  • 向前在脚本之间:从外部不可见
  • 在页面之间重定向从外部可见
编辑:

看到你在编辑解释你的过程,你需要的不是转发,而是知道如何跟踪敏感数据

如评论中所述,会议就是针对这一点进行的。只有服务器才能看到这些数据


问另一个问题。

如果速度足够快,普通用户将看不到,但例如,通过Firefox的网络工具,您可以看到正在加载的页面。这是不可能隐藏的事实,有一些中间页的用户谁想知道。最好是
PHP代码包含到另一个PHP文件中,以隐藏实现细节。我不确定是否取消了