شكراً لك على طلب السحب الخاص بك الذي يتيح استخدام شبكة توصيل المحتوى (CDN) للرموز التعبيرية المخصصة.
بينما يطلب إصلاح الواجهة الأمامية الخاص بك عناوين CDN للرموز التعبيرية بشكل صحيح، إلا أنني قلق بشأن أمان الواجهة الخلفية.
لا يزال نقطة النهاية https://meta.discourse.org/emojis.json تكشف عن عناوين URL لمصدر S3 مثل //assets-meta-cdck-prod-meta.s3.dualstack.us-west-1.amazonaws.com/original/3X/6/1/61e481320406f0f82ed780db3f04056128191613.png، والتي يمكن أن تؤدي إلى إساءة استخدام خبيثة وفواتير S3 مفرطة.
لأمان أفضل، أقترح إرجاع عناوين CDN مباشرة، على غرار كيفية التعامل مع الرموز التعبيرية غير المخصصة.
إليك محاولتي لإصلاح الكود:
class EmojisController < ApplicationController
def index
emojis = Emoji.allowed.group_by(&:group)
emojis.each do |_, emoji_list|
emoji_list.each do |emoji|
emoji.url = Discourse.store.cdn_url(emoji.url) if emoji.url.present?
end
end
render json: MultiJson.dump(emojis)
end
def search_aliases
render json: MultiJson.dump(Emoji.search_aliases)
end
end
نعم، أعلم أننا نفعل ذلك مباشرةً للرموز التعبيرية غير المخصصة في emoji.rb، وهو ما أفضل من وحدة التحكم. أريد التأكد من أن هذا لن يسبب مشاكل، لذا قمت بأبسط إصلاح في الوقت الحالي، لكنني سأتعمق في هذا الأمر في المستقبل.