البيانات المشفرة في عناوين URL
-
30-09-2019 - |
سؤال
أقوم بتطوير تطبيق PHP لإدارة الطلبات للشركة. لعرض طلب عنوان URL حاليًا /orders/view/3502
.
لا أريد أن يظهر رقم معرف الطلب في عنوان URL ، لذلك استخدمت مكتبة Encrypt الخاصة بـ Codeigniter لتشفير المعرف في عنوان URL. يبدو أن عنوان URL (بعد التشفير) /orders/view/AaffGdQQ
.
المشكلة التي أواجهها هي في بعض الأحيان ، تحتوي المعرف المشفر على مقطع شرطة للأمام أو علامة زائد ، والتي لا تعمل بشكل صحيح عندما تكون في عنوان URL. يقرأ CodeIgniter عنوان URL استنادًا إلى القطع المائلة ، لذلك ، إذا كان المعرف المشفر به مائل ، فسوف يقرأ أنه كمتغيران ، وليس أحد المتغيرات. أيضا ، يتم تفسير العلامات بالإضافة إلى مسافات في عناوين URL.
لذا ، سؤالي هو ، كيف يمكنني تشفير المعرف والتأكد من أن السلسلة لا تحتوي على علامة زائد أو مائلة؟
تحرير: كان لدي فكرة لمعرفة ما إذا كان المعرف المشفر يحتوي على علامة مائلة أو علامة زائد ، وإذا كان كذلك ، فرضه مرة أخرى. لسبب ما ، في كل مرة يتم تشفير المعرف ، الأمر مختلف ، لذلك سيعمل هذا.
المحلول
يمكنك أيضا base64_encode (). سيجعل ذلك أيضًا أطول بكثير ويظهر "أكثر أمانًا". يضيف أيضا طبقة من التشويش.
نصائح أخرى
ربما تمرير البيانات cryped من خلال urlencode()
هل إصلاح هذا؟ بعد قيامك بذلك ، يجب عليك اعتراض البيانات قبل أن يقوم CodeIgniter وتشغيله urldecode()
عليه.
مجرد فكرة سريعة ، حظا سعيدا جدا!
ابحث عن بعض الأحرف التي لا يستخدمها التشفير واستبدالها أثناء تناسبه. عند استخدام عناوين URL ، التراجع عنها.