[英]Send post data in url and secure it
我想通過URL發送一些信息,但是我如何以安全的方式對此進行加密?
這是我的網址,例如: http : //www.domain.com/process/? var=1&variable =2
如果用戶知道URL,則可以更改變量,但這不是故意的。
我必須對其進行加密,然后在我認為的服務器上對其進行解密。 但是,執行此操作的一種好而安全的方法是什么?
編輯更多信息
我要存檔的是我的手機應用程序(在本例中為IOS)通過API與我的Web應用程序(主要)進行通信。 該URL可能看起來像http://www.website.com/api/my_secret_key/get/users ,它將以json響應。另外,該應用還需要設置值,例如: http : //www.website。 com / api / my_secret_key / set / user / score / 100
但是,使用上述URL調整值很容易,但是不需要。 如何使用安全的方法完成此操作。
警告 :密碼代碼不安全。 一個更好的答案和解決方案已經存在於StackOverflow上 。
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.. */
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.