簡體   English   中英

在 url 中使用 base64 編碼字符串和 codeigniter

[英]using a base64 encoded string in url with codeigniter

我有一個加密的 base64 編碼數組,我需要將其放入 url 並插入到我們發送給客戶的電子郵件中以使其能夠被識別(唯一) - 問題是 base64_encode() 經常在它之后附加一個 = 符號或兩個字符串,默認情況下 CI 不允許。

Here's an example: http://example.com/cec/pay_invoice/VXpkUmJnMWxYRFZWTEZSd0RXZFRaMVZnQWowR2N3TTdEVzRDZGdCbkQycFFaZ0JpQmd4V09RRmdWbkVMYXdZbUJ6OEdZQVJ1QlNJTU9Bb3RWenNFSmxaaFVXcFZaMXQxQXpWV1BRQThVVEpUT0ZFZ0RRbGNabFV6VkNFTlpsTWxWV29DTmdackEzQU5Nd0lpQURNUGNGQS9BRFlHWTFacUFTWldOZ3M5QmpRSGJBWTlCREVGWkF4V0NtQlhiZ1IzVm1CUk9sVm5XMllEWlZaaEFHeFJZMU51VVdNTmJsdzNWVzlVT0EwZw==

現在我明白我可以允許在 config.php 中使用 = 登錄,但我並不完全理解這樣做的安全隱患(它一定是出於某種原因被禁用的吧?)

有誰知道為什么在 URL 中允許使用 = 符號可能是個壞主意?

謝謝。 約翰。

不知道為什么=被禁止,但你也可以省略等號。

$base_64 = base64_encode($data);
$url_param = rtrim($base_64, '=');
// and later:
$base_64 = $url_param . str_repeat('=', strlen($url_param) % 4);
$data = base64_decode($base_64);

base64 規范只允許在字符串末尾使用=符號,它們純粹用作填充,不會丟失數據。

編輯:它可能不允許將此作為兼容性選項。 從安全的角度來看,我無法想到任何理由,但它有可能會在工具鏈中的某個位置與查詢字符串解析混淆。

請在您的 config.php 文件中將字符“=”添加到 $config['permitted_uri_chars'],您可以在 application/config 文件夾中找到該文件

原來 url 中根本沒有任何有害字符。 但是沒有經驗豐富的開發人員或糟糕的軟件可以幫助某些角色變得邪惡。

截至= - 我沒有看到在網址中使用它有任何問題

您可以使用原生 php 的 urlencode 和 urldecode function 而不是更新配置文件。

 $str=base64_encode('test'); $url_to_be_send=urlencode($str); //send it via url //now on reciveing side //assuming value passed via get is stored in $encoded_str $decoded_str=base64_decode(urldecode($encoded_str));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM