اذهب إلى المحتوى

السؤال

نشر

أقوم بتمرير نص مشفر بإستخدام Base64 بالشكل التالي:

http://localhost:8080/save?sentance=aGVsbG8sIHdvcmxk

هل قد تحدث مشكلة في المستقبل بسبب تشفير النص بإستخدام Base64 بسبب رموز مثل = + في Base64؟

Recommended Posts

  • 1
نشر

الرموز المستخدمة في base64 هي:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=

كل هذه الرموز يمكن إستخدامها في عناوين URL بدون مشكلة ماعدا آخر ثلاثة رموز (+/=) حيث أن لكل واحدٍ منهم له معنى مختلف في عناوين URL، لذلك عليك أن تستبدلهم بعد عملية التشفير برموز أخرى مثل (._-) على سبيل المثال، ويمكنك أن تستخدم base64 في عناوين URL بدون مشكلة من خلال إستخدام الدالة urlencode مع base64_encode على النحو التالي:

<?php

$str = 'Hello, world';
$encoded = urlencode( base64_encode( $str ) );
echo $encoded;	// SGVsbG8sIHdvcmxk

ولفك تشفير النص تستطيع إستخدام الدالة base64_decode مع urldecode على النحو التالي:

<?php

$encoded_str = 'SGVsbG8sIHdvcmxk';
$decoded = base64_decode( urldecode( $encoded_str ) );

echo $decoded;	// Hello, world

 

  • 1
نشر

ليس من الآمن فعل ذلك , بل يجب ان تقوم بعمل اعادة ترميز لعنوان url لأنه من الممكن أن تحتوي سلاسل base64 على الأحرف "+" و "=" و "/" والتي يمكن أن تغير معنى البيانات حيث تبدو كمجلد فرعي أو مسار آخر , يمكنك الاستعانة بالدالتين التاليتين كدوال مساعدة لك 

function base64_url_encode($input) {
 return strtr(base64_encode($input), '+/=', '._-');
}

function base64_url_decode($input) {
 return base64_decode(strtr($input, '._-', '+/='));
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...