Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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 在url中发送post数据并保护它_Php_Security_Url_Encryption - Fatal编程技术网

Php 在url中发送post数据并保护它

Php 在url中发送post数据并保护它,php,security,url,encryption,Php,Security,Url,Encryption,我想在url中发送一些信息,但如何以安全的方式对此进行加密 这是我的url,例如: 如果用户知道url,他可以更改变量,但这不是目的 我必须加密它,然后在服务器上解密。但是,什么是一个好的和安全的方式来做这件事呢 编辑更多信息 我想归档的是,我的手机应用程序(本例中为IOS)通过API与我的web应用程序(主应用程序)通信。URL可能如下所示 ,它将用json响应 应用程序还需要设置值,例如: 不过,使用上述URL调整值很容易,但并不需要。如何使用安全的方法来实现这一点 警告:下面是不安全的密

我想在url中发送一些信息,但如何以安全的方式对此进行加密

这是我的url,例如:

如果用户知道url,他可以更改变量,但这不是目的

我必须加密它,然后在服务器上解密。但是,什么是一个好的和安全的方式来做这件事呢

编辑更多信息

我想归档的是,我的手机应用程序(本例中为IOS)通过API与我的web应用程序(主应用程序)通信。URL可能如下所示 ,它将用json响应 应用程序还需要设置值,例如:

不过,使用上述URL调整值很容易,但并不需要。如何使用安全的方法来实现这一点

警告:下面是不安全的密码

警告:下面是不安全的密码



如果您发送的内容是敏感的,那么将其传递到URL是绝对的最后手段。
POST
ing数据是不可能的吗?您可以使用
cURL
发送
POST
请求-可能重复@juxhin请查看我编辑的帖子,当使用cURL使用该类型的url进行设置时是安全的,并且最终用户无法调整POST值吗?是
my_secret_key
特定于用户的吗(在这种情况下,它应该是一个秘密,不应该出现在URL中),或者是你提供给你的应用程序的一个魔法密钥(在这种情况下,你的安全模式是基于信任客户端,这根本不起作用)?如果您发送的内容是敏感的,那么将其传递到URL中是绝对的最后手段。是否
POST
将数据排除在外?您可以使用
cURL
发送
POST
请求-可能重复@juxhin,请参阅我编辑的帖子,使用cURL时使用该类型的URL进行设置是安全的,并且dusers无法调整POST值?是用户特定的
my_secret\u key
(在这种情况下,它应该是一个秘密,不应该出现在URL中),还是您向应用程序提供的一个魔法密钥(在这种情况下,您的安全模式是基于信任客户端,这根本不起作用)?不明白为什么有那么多的
code
iv
相关,其中构造函数中的模式是
MCRYPT\u mode\u ECB
。不知道为什么会被标记下来-他要求对查询字符串参数进行加密/解密,这就是它所做的。我没有否决你的答案,但我认为OP需要一方(手机应用程序)加密url,另一方(服务器)将解密。OP编辑了答案。当我回答时,关于手机应用程序的信息不在问题中,我还没有开发出心理能力——但不麻烦……这也受到了“如果你在代码中键入字母A-E-S,你做错了”中提到的几乎所有问题的困扰.避免。(使用
mb\u detect\u编码的东西是一个全新的奇怪的东西。恭喜!)不明白为什么有那么多的
code
iv
相关,其中构造函数中的模式是
MCRYPT\u mode\u ECB
。不确定为什么会被标记下来-他要求对查询字符串参数进行加密/解密,这就是它的作用。我没有否决你的答案,但我认为OP需要一方(手机应用程序)加密url,另一方(服务器)将解密。OP编辑了答案。当我回答时,关于手机应用程序的信息不在问题中,我还没有开发出心理能力——但不麻烦……这也受到了“如果你在代码中键入字母A-E-S,你做错了”中提到的几乎所有问题的困扰.避免。(使用
mb\u detect\u编码的东西是一个全新的奇怪的东西。恭喜!)
class encryption{
        private $config;

        public function __construct( $options=array() ){
            $this->config=array_merge(
                array(
                    'cipher'    =>  MCRYPT_RIJNDAEL_256,
                    'mode'      =>  MCRYPT_MODE_ECB,
                    'key'       =>  FALSE,
                    'iv'        =>  FALSE,
                    'size'      =>  FALSE,
                    'base64'    =>  TRUE,
                    'salt'      =>  FALSE
                ),
                $options
            );
        }
        private function getivs( $config=object ){
            $config->size=mcrypt_get_iv_size( $config->cipher, $config->mode );
            $config->iv=mcrypt_create_iv( $config->size, MCRYPT_RAND );
        }
        public function encrypt( $data=NULL ){
            $config=(object)$this->config;
            $this->getivs( $config );
            $data=trim( $data );
            $module = mcrypt_module_open( $config->cipher, '', $config->mode, '' );
            mcrypt_generic_init( $module, $config->key, $config->iv );

            $output = $config->base64 ? base64_encode( mcrypt_generic( $module, $data ) ) : mcrypt_generic( $module, $data );

            mcrypt_generic_deinit( $module );
            mcrypt_module_close( $module );
            return $output;
        }
        public function decrypt( $data=NULL ){
            $config=(object)$this->config;
            $this->getivs( $config );
            mb_detect_order( 'auto' );
            $encoding=mb_detect_encoding( $data );
            if( !$data or is_null( $data ) or empty( $data ) or !$encoding or $data=='' or base64_decode( $data )=='' ) return FALSE;

            $module = mcrypt_module_open( $config->cipher, '', $config->mode, '' );
            mcrypt_generic_init( $module, $config->key, $config->iv );

            $output = $config->base64 ? rtrim( mdecrypt_generic( $module, base64_decode( $data ) ),"\0" ) : rtrim( mdecrypt_generic( $module, $data ),"\0" );

            mcrypt_generic_deinit( $module );
            mcrypt_module_close( $module );
            return urldecode( $output );
        }
}//end class




/* Prepare data for transmission */
$enc=new encryption(array('key'=>'s0m3v3ryr4nd0mt3xt'));
$payload=enc->encrypt('var1=value1&var2=value2&var3=value3');

$url='http://www.domain.com/process/?payload='.$payload;


/* to decrypt */
$payload=$_GET['payload'];
$decrypted=$enc->decrypt( $payload );

/* process querystring - explode, split whatever.. */