แปลง: ไม่ได้รับอนุญาต `aaaa` @ error / constitute.c / ReadImage / 453


309

ฉันต้องการสร้างรูปแคปต์ชาโดยใช้convertจาก ImageMagick

และฉันทำตามนี้แต่มีปัญหาบางอย่าง

อินพุตในเชลล์ลินุกซ์ของฉัน:

convert -background white -fill black -font FreeSerif-Bold -pointsize 36 label:'adfgh' ./test.png

ข้อผิดพลาดคือ:

แปลง: ไม่ได้รับอนุญาตadfgh@ ข้อผิดพลาด / con.c.c / ReadImage / 453 แปลง: ไม่มีชื่อไฟล์ภาพ./test.png@ error / convert.c / ConvertImageCommand / 3015

ImageMagick ของฉัน: รุ่น: 6.7.2-7 yum install ImageMagickผมติดตั้งด้วย

ฉันไร้เดียงสา มีคำแนะนำอะไรมั้ย


7
ตรวจสอบpolicy.xmlอีกครั้ง ตัวเลือกความปลอดภัยอาจป้องกันlabel:โปรโตคอล
emcconville

2
ขอบคุณ! ฉันแก้ไข policy.xml แสดงความคิดเห็นบรรทัดนี้ "<policy domain =" coder "rights =" none "pattern =" LAEBL ">" มันใช้งานได้! ขอบคุณมาก!
jianwei

3
policy.xml อยู่ที่ไหน
Arnold Roa

3
/etc/ImageMagick/policy.xml
jianwei

6
/etc/ImageMagick-6/policy.xml
xerostomus

คำตอบ:


445

หมายเหตุ: โซลูชันในคำตอบนี้และคำตอบอื่น ๆ เกี่ยวข้องกับการปิดใช้งานมาตรการความปลอดภัยที่มีเพื่อแก้ไขช่องโหว่ในการใช้รหัสโดยอำเภอใจ ดูตัวอย่างอินสแตนซ์ที่เกี่ยวข้องกับผีและประกาศอูบุนตูที่เกี่ยวข้องนี้ เดินหน้าต่อไปด้วยโซลูชันเหล่านี้หากอินพุทconvertมาจากแหล่งที่เชื่อถือได้

ฉันใช้ ImageMagick ใน php (v.7.1) เพื่อแบ่งไฟล์ PDF เป็นภาพ

ก่อนอื่นฉันได้รับข้อผิดพลาดเช่น:

ประเภทข้อยกเว้น: ImagickException

ข้อความยกเว้น: ไม่ได้รับอนุญาต ..... @ ข้อผิดพลาด / constitute.c / ReadImage / 412

หลังจากการเปลี่ยนแปลงบางอย่าง/etc/ImageMagick-6/policy.xmlฉันก็เริ่มรู้สึกผิดชอบ:

ประเภทข้อยกเว้น: ImagickException

ข้อความแสดงข้อยกเว้น: ไม่สามารถสร้างไฟล์ชั่วคราว ..... สิทธิ์ถูกปฏิเสธ @ error / pdf.c / ReadPDFImage / 465

การแก้ไขของฉัน :

ในไฟล์/etc/ImageMagick-6/policy.xml(หรือ/etc/ImageMagick/policy.xml)

  1. บรรทัดความคิดเห็น

    <!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
  2. เปลี่ยนสาย

    <policy domain="coder" rights="none" pattern="PDF" />

    ถึง

    <policy domain="coder" rights="read|write" pattern="PDF" />
  3. เพิ่มบรรทัด

    <policy domain="coder" rights="read|write" pattern="LABEL" />

จากนั้นรีสตาร์ทเว็บเซิร์ฟเวอร์ของคุณ (nginx, apache)


54
นี่ควรเป็นคำตอบที่ยอมรับได้ถ้าคุณประสบปัญหานี้ในกล่อง Ubuntu ตั้งแต่ 4 ต.ค. 2561 ปัญหาอื่นจาก distros อื่น ๆ ?
LucasBr

12
ฉันเพิ่งจะได้รับปัญหานี้เมื่อวันนี้บน Ubuntu 16.04 มีอะไรเปลี่ยนแปลงบ้างไหม? นอกจากนี้ฉันไม่จำเป็นต้องเพิ่มบรรทัด LABEL เพียงแค่เปลี่ยนสิทธิ์สำหรับ PDF จาก "none" เป็น "read"
ไบรอันท์ Kou

4
แก้ปัญหาที่คล้ายกันมากในกล่อง Ubuntu 18.04.1 LTS ของฉัน
mhernandez

3
ในเซิร์ฟเวอร์ของฉันpolicy.xmlไฟล์ปรับปรุงล่าสุดเมื่อวันที่ 29 กันยายน แต่ปัญหาเพิ่งเกิดขึ้นในวันนี้ ฉันใช้เซิร์ฟเวอร์ Ubuntu 14.04.5 แต่ตั้งการอัพเดทอัตโนมัติ ในบันทึก apt ฉันพบเกี่ยวกับการอัปเดตนี้:imagemagick-common:amd64 (6.7.7.10-6ubuntu3.12, 6.7.7.10-6ubuntu3.13),
Donny Kurnia

12
นี่คือรายการเปลี่ยนแปลงที่เกี่ยวข้อง: launchpad.net/ubuntu/+source/imagemagick/8:6.7.7.10-6ubuntu3.13
Donny Kurnia

161

ฉันใช้convertคำสั่งImageMagic หลายครั้งในการแปลง*.tifไฟล์เป็น*.pdfไฟล์ต่างๆ

ฉันไม่รู้ว่าทำไม แต่วันนี้ฉันเริ่มได้รับข้อผิดพลาดต่อไปนี้:

convert: not authorized `a.pdf' @ error/constitute.c/WriteImage/1028.

หลังจากออกคำสั่ง:

convert a.tif a.pdf

หลังจากอ่านคำตอบข้างต้นฉันแก้ไขไฟล์ /etc/ImageMagick-6/policy.xml

และเปลี่ยนสาย:

policy domain="coder" rights="none" pattern="PDF" 

ถึง

policy domain="coder" rights="read|write" pattern="PDF"

และตอนนี้ทุกอย่างทำงานได้ดี

ฉันมี "ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28" บน "Ubuntu 16.04.5 LTS"


1
ฉันใช้ openSuse Leap 15.0 และใช้ "เปรียบเทียบ" เพื่อเปรียบเทียบหน้า PDF ข้อผิดพลาดเดียวกันแม้หลังจากการปรับปรุงโดย openSuse ในวันที่ 10 ตุลาคม 2018 หลังจากเปลี่ยนบรรทัดตามที่อธิบายไว้ที่นี่มันทำงาน
Keks Dose

ฉันใช้งาน Ubuntu Xenial 16.04 LTS และทันใดนั้นฉันก็เริ่มเห็นข้อผิดพลาดในบันทึก Apache ฉันยืนยันว่าหลังจากเปลี่ยนนโยบายตามที่อธิบายไว้ที่นี่ปัญหาได้รับการแก้ไข
user2641103

5
นี่เป็นคำตอบที่ถูกต้องน้อยที่สุด - คำตอบของ sNICkerssss นั้นถูกต้องทางเทคนิค แต่ต้องการเพียงขั้นตอนเดียวเท่านั้นสำหรับการใช้บรรทัดคำสั่งconvertเป็น PDF
davidA

1
'ปัญหา' นี้รวดเร็วและสกปรก 'แก้ไข' เพื่อฟังก์ชั่น Ghostscript ในระยะยาวเราควรหาการแทนที่ Ghostscript (และอาจเป็น ImageMagick)
9ilsdx 9rvj 0lo

4
อย่าทำอย่างนี้ ข้อ จำกัด นี้ถูกนำเสนอเป็นมาตรการรักษาความปลอดภัยเนื่องจากการเรียกใช้รหัสจากระยะไกลที่เป็นไปได้ (ดูที่launchpad.net/ubuntu/+source/imagemagick/8:6.7.7.10-6ubuntu3.13 ) ดังนั้นคำตอบที่ถูกต้องคือ: คุณควรใช้โปรแกรมอื่นสำหรับงานนี้
Marian

66

หมายเหตุ: โซลูชันนี้และโซลูชัน "แก้ไข the policy.xml" อื่น ๆ จะปิดใช้งานมาตรการด้านความปลอดภัยเพื่อป้องกันช่องโหว่ในการใช้รหัสโดยอำเภอใจใน ImageMagick หากคุณต้องการประมวลผลอินพุตที่คุณไม่ได้ควบคุม 100% คุณควรใช้โปรแกรมอื่น (ไม่ใช่ ImageMagick)

หากคุณยังอยู่ที่นี่คุณกำลังพยายามแก้ไขภาพที่คุณสามารถควบคุมได้อย่างสมบูรณ์รู้ว่าปลอดภัยและไม่สามารถแก้ไขได้โดยผู้ใช้

มี/etc/ImageMagick/policy.xmlไฟล์ที่ติดตั้งโดย yum มันไม่อนุญาตให้ใช้งานเกือบทุกอย่าง (เพื่อความปลอดภัยและเพื่อป้องกันระบบของคุณจากการโอเวอร์โหลดด้วยการโทร ImageMagick)

หากคุณได้รับReadImageข้อผิดพลาดดังกล่าวข้างต้นคุณสามารถเปลี่ยนบรรทัดเป็น:

<policy domain="coder" rights="read" pattern="LABEL" />

ซึ่งควรแก้ไขปัญหา

ไฟล์ดังกล่าวมีเอกสารประกอบมากมายดังนั้นคุณควรอ่าน ตัวอย่างเช่นหากคุณต้องการการอนุญาตเพิ่มเติมคุณสามารถรวมได้เช่น:

<policy domain="coder" rights="read|write" pattern="LABEL" />

... ซึ่งเป็นวิธีที่ดีกว่าในการลบการตรวจสอบสิทธิ์ทั้งหมด (เช่นการลบหรือแสดงความคิดเห็นในบรรทัด)


2
อย่าทำอย่างนี้ ข้อ จำกัด นี้ถูกนำเสนอเป็นมาตรการรักษาความปลอดภัยเนื่องจากการเรียกใช้รหัสจากระยะไกลที่เป็นไปได้ (ดูที่launchpad.net/ubuntu/+source/imagemagick/8:6.7.7.10-6ubuntu3.13 ) ดังนั้นคำตอบที่ถูกต้องคือ: คุณควรใช้โปรแกรมอื่นสำหรับงานนี้
Marian

5
@Marian การใช้โปรแกรมอื่นไม่เป็นประโยชน์ - OP ถามโดยเฉพาะเกี่ยวกับ ImageMagick การตอบสนองควรเป็น "คุณควรรู้ว่าคุณกำลังทำอะไรทำด้วยความเสี่ยงของคุณเองตรวจสอบให้แน่ใจว่าระบบของคุณปลอดภัยนี่คือสาเหตุที่คุณไม่ควรทำและนี่คือวิธีที่จะทำ"
KolonUK

2
OP (และผู้คนที่มาที่นี่ด้วยการค้นหาเว็บรวมถึงฉัน) ใช้ ImageMagick มาจนถึงตอนนี้ แน่นอนว่าการลองครั้งแรกในการแก้ปัญหานี้คือการหาวิธีแก้ปัญหาโดยใช้ ImageMagick เนื่องจากต้องมีการเปลี่ยนแปลงน้อยที่สุด นั่นไม่ได้หมายความว่าพวกเขาต้องการใช้ ImageMagick โดยไม่มีเงื่อนไข
Marian

3
ฉันพบว่าวิธีการรักษาความปลอดภัยที่ไม่เหมาะสมมากสำหรับเว็บไซต์ Q&A ที่มีคนเห็นเป็นพัน (หน้านี้มีการดู 100k ครั้งและเป็นผลการค้นหาอันดับต้น ๆ ของปัญหานี้) - และเรามาที่นี่อย่างชัดเจนมีความพยายามอย่างมาก ความสำคัญของช่องโหว่นี้รวมถึงไซต์เฉพาะที่ตั้งขึ้นเพื่อเผยแพร่ ( imagetragick.com ) - คำแนะนำของ Marian ว่าควรหาทางเลือกอื่นแทนที่จะใช้การรักษาความปลอดภัยที่ผ่านไป ฉันเลือกใช้ GIMP แทน popplerเป็นทางเลือกสำหรับ GhostScript (ซึ่งconvertอาศัยการแปลงหน้า PDF เป็นรูปภาพ)
Louis Maddox

1
ไม่มีตัวเลือกบรรทัดคำสั่งเพื่อปิดใช้งานนโยบายความปลอดภัยชั่วคราวหรือไม่ จากนั้นเราสามารถใช้กับไฟล์ PDF ที่เราเชื่อถือได้
HRJ

27

หากใครบางคนจำเป็นต้องทำด้วยคำสั่งเดียวหลังจากติดตั้งให้รันสิ่งนี้!

sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read|write" pattern="PDF" \/>/g' /etc/ImageMagick-6/policy.xml

6
สั้นลง:sed -i 's/\(<policy domain="coder" rights=\)"none" \(pattern="PDF" \/>\)/\1"read|write"\2/g' /etc/ImageMagick-6/policy.xml
leftaroundabout

5
รัดกุมยิ่งขึ้น และต้องใช้ sudo เพื่อแก้ไขไฟล์ภายใน / etc sudo sed -i '/PDF/s/none/read|write/' /etc/ImageMagick-6/policy.xml
Naveed

อย่าลืมอัปเดต ghostscript kb.cert.org/vuls/id/332928
ykay พูดว่า Reinstate Monica

24

คำตอบที่มีคะแนนโหวตสูงสุด (ฉันมีชื่อเสียงไม่เพียงพอที่จะเพิ่มความคิดเห็นที่นั่น) แนะนำให้แสดงความคิดเห็นในบรรทัด MVG แต่มีในใจนี้:

CVE-2016-3714

ImageMagick รองรับไฟล์ ".svg / .mvg" ซึ่งหมายความว่าผู้โจมตีสามารถสร้างรหัสในภาษาสคริปต์เช่น MSL (Magick Scripting Language) และ MVG (Magick Vector Graphics) อัปโหลดไปยังเซิร์ฟเวอร์ที่ปลอมเป็นไฟล์ภาพและบังคับให้ ซอฟต์แวร์เพื่อเรียกใช้คำสั่งที่เป็นอันตรายทางฝั่งเซิร์ฟเวอร์ตามที่อธิบายไว้ข้างต้น ตัวอย่างเช่นการเพิ่มคำสั่งต่อไปนี้ในไฟล์และอัปโหลดไปยังเว็บเซิร์ฟเวอร์ที่ใช้ ImageMagick เวอร์ชันที่มีช่องโหว่จะส่งผลให้การรันคำสั่ง "ls -la" บนเซิร์ฟเวอร์

exploit.jpg:

พุชบ็อกซ์บริบทคอนเทนต์แบบกราฟิก 0 0 640 480 เติม 'url ( https://website.com/image.png "| ls" -la)' ป๊อปกราฟิกบริบท

และ

เวอร์ชั่นใดก็ตามที่ต่ำกว่า 7.0.1-2 หรือ 6.9.4-0 นั้นอาจมีความเสี่ยงและผู้ที่ได้รับผลกระทบควรอัพเกรดเป็น ImageMagick เวอร์ชันล่าสุดโดยเร็วที่สุด

แหล่ง


3
ฉันไม่ได้คอมเม้นท์ MVG และ PDF -> การแปลง JPG ยังใช้งานได้ ขอบคุณ.
Rimu Atkinson

1
6.7.7-10 ดูเหมือนว่าเป็นรุ่นใหม่ล่าสุดออกวางจำหน่ายวันที่ 28/9/2558) ฉันพลาดอะไรไป $convert --version Version: ImageMagick 6.7.7-10 2018-09-28 Q16 http://www.imagemagick.org
HaPsantran

มีรุ่นที่ใหม่กว่าคือimagemagick.org/script/download.phpการกระจาย Linux ของคุณอาจใช้รุ่นเก่ากว่า ขณะนี้ Ubuntu 16.04 ใช้ 6.8.9-9
Nikolay Ivanov

1
ดีดังนั้นทางออกที่เหมาะสมสำหรับทีมงาน Ubuntu ก็คือการอัปเดต imagemagick เป็นเวอร์ชันที่ใหม่กว่าไม่ใช่เพื่อแยกส่วนที่มีอยู่เดิมออก
9ilsdx 9rvj 0lo

2
ไม่อูบุนตูเป็นการแจกจ่ายที่ไม่ใช้ฟีเจอร์และจะไม่ออกเวอร์ชั่นใหม่ที่อัปสตรีมต้นน้ำ
Buo-Ren Lin

19

หลังจากอัปเดตล่าสุดในระบบ Ubuntu 16.04 ของฉันฉันได้เริ่มรับข้อผิดพลาดนี้เมื่อพยายามเรียกใช้ convert บนไฟล์. ps เพื่อแปลงเป็นไฟล์ pdf

การแก้ไขนี้ใช้งานได้สำหรับฉัน:

ในการใช้งานเทอร์มินัล:

sudo gedit /etc/ImageMagick-6/policy.xml

สิ่งนี้ควรเปิดไฟล์ policy.xml ในโปรแกรมแก้ไขข้อความ gedit หากไม่เป็นเช่นนั้นภาพเวทมนตร์ของคุณอาจติดตั้งในตำแหน่งอื่น จากนั้นเปลี่ยน

rights="none" 

ถึง

rights="read | write" 

สำหรับบรรทัด PDF, EPS และ PS ใกล้กับด้านล่างของไฟล์ บันทึกและออกจากนั้นภาพเวทมนตร์ควรทำงานได้อีกครั้ง


1
อย่าลืมอัปเดต ghostscript kb.cert.org/vuls/id/332928
ykay พูดว่า Reinstate Monica

สิ่งนี้ช่วยใน Ubuntu 18.04 ImageMagick 6.9.7-4 ขอบคุณ
และ

11

เพียงลบไฟล์ /etc/ImageMagick/policy.xml


1
เรียบง่าย แต่สมบูรณ์แบบ ฉันทำสิ่งนี้เนื่องจากการทดสอบล้มเหลวในการรับส่งข้อมูล
Dan Rey Oquindo

1
นี่เป็นทางออกเดียวที่ทำงานจากโพสต์มากมาย policy-disabled.xmlฉันมันเปลี่ยนไป ฉันคิดว่าฉันจะกู้คืนมันจนกว่าฉันจะแน่ใจว่าปัญหาด้านความปลอดภัยได้รับการแก้ไขแล้ว
groovenectar

และหลังจากรีสตาร์ทเคอร์เนลในกรณีของโน๊ตบุ๊ค jupyter
Nicole Douglas

2

หลังจากอ่านข้อเสนอแนะหลายอย่างที่นี่และรวมความคิดสำหรับฉันหลังจากการเปลี่ยนแปลงใน /etc/ImageMagick-6/policy.xml มีความจำเป็น:

<policy domain="coder" rights="read|write" pattern="PDF" />

... rights = "none" ไม่ได้ช่วย ... pattern = "LABEL" ไม่ใช่สิ่งจำเป็น แม้ว่าฉันจะไม่ทำงานกับไฟล์ png ขนาดใหญ่ (เพียง ~ 1 Mb) การเปลี่ยนแปลงบางอย่างในการ จำกัด หน่วยความจำก็จำเป็นเช่นกัน:

<policy domain="resource" name="memory" value="2GiB"/>

(แทน 256Mib) และ

<policy domain="resource" name="area" value="2GB"/>

(แทน 128 MB)


2

ฉันมีข้อผิดพลาดนี้เมื่อพยายามแปลงไฟล์ PDF เป็น jpg และแก้ไขโดยใช้วิธีนี้: sudo vi /etc/ImageMagick*/policy.xml

เปลี่ยน:

นโยบายโดเมน = "coder" สิทธิ = "none" pattern = "PDF"

ถึง:

นโยบายโดเมน = "coder" สิทธิ = "อ่าน | เขียน" รูปแบบ = "PDF"

ที่มา: http://realtechtalk.com/ImageMagick_Convert_PDF_Not_Authorized-2217-articles


2

หากคุณไม่ต้องการจัดการไฟล์แรสเตอร์และ PDF / PS / EPS ผ่านเครื่องมือเดียวกันอย่าปล่อยให้ระบบความปลอดภัยของ ImageMagick คลายออก

แต่ให้การป้องกันในเชิงลึกสำหรับเว็บแอปพลิเคชันของคุณไม่บุบสลายตรวจสอบว่า Ghostscript ของคุณได้รับการแก้ไขสำหรับ-dSAFERช่องโหว่ที่รู้จักทั้งหมดแล้วเรียกใช้โดยตรง

gs -dSAFER -r300 -sDEVICE=png16m -o document-%03d.png document.pdf
  • -dSAFER เลือกคุณออกจาก "ความเข้ากันได้แบบดั้งเดิม" รัน Postscript จะได้รับอนุญาตอย่างเต็มที่ในการโต้ตอบกับโลกภายนอกเป็นภาษาการเขียนโปรแกรมที่สมบูรณ์แบบ "
  • -r300 ตั้ง DPI ที่ต้องการเป็น 300 (ค่าเริ่มต้นคือ 72)
  • -sDEVICEระบุรูปแบบผลลัพธ์ (ดูในส่วนอุปกรณ์ของคู่มือสำหรับตัวเลือกอื่น ๆ )
  • -o เป็นการจดชวเลข -dBATCH -dNOPAUSE -sOutputFile=
  • ส่วนนี้ของคู่มือ Ghostscript ให้ตัวอย่างบางรูปแบบสำหรับไฟล์ชื่อไฟล์หลายไฟล์ แต่สำหรับคำนิยามทางไวยากรณ์ที่แท้จริงนั้นจะนำคุณไปที่เอกสารสำหรับฟังก์ชั่นC printf (3)

หากคุณกำลังแสดงผลไฟล์ EPS ให้เพิ่ม-dEPSCropเพื่อไม่ให้ภาพของคุณมีขนาดหน้ากระดาษและใช้-sDEVICE=pngalphaเพื่อให้พื้นหลังโปร่งใส


ขอบคุณสำหรับโซลูชันที่ปลอดภัยยิ่งขึ้น ไม่แน่ใจว่าฉันจะจำตัวเลือกบรรทัดคำสั่ง GhostScript ได้หรือไม่! :)
Cris Luengo

@CrisLuengo ฉันจะไม่ทำเช่นนั้น นั่นเป็นเหตุผลที่ฉันโพสต์ไว้ในผลลัพธ์ของ Google ให้มากที่สุดเท่าที่จะหาได้ซึ่งเป็นคำตอบที่ดีสำหรับคำถามที่โพสต์ : P
ssokolow

1
ฉันพบผลลัพธ์ที่ดีโดยใช้-r600 -dDownScaleFactor=4เพื่อสร้างไฟล์ที่มี 150 dpi แต่มีการป้องกันนามแฝงที่ดีกว่า
John Cole

0

ฉันยังมีข้อผิดพลาดerror/constitute.c/ReadImage/453 เมื่อพยายามแปลง eps เป็น gif ด้วย image magick ฉันลองวิธีแก้ปัญหาที่เสนอโดย sNICkerssss แต่ก็ยังมีข้อผิดพลาด (แม้ว่าจะแตกต่างจากอันแรก) e error/constitute.c/ReadImage/412 สิ่งที่แก้ปัญหาได้คือนำreadไปใส่ในรายการอื่น

 <policy domain="coder" rights="read" pattern="PS" />
 <policy domain="coder" rights="read" pattern="EPS" />
 <policy domain="coder" rights="read" pattern="PDF" />
 <policy domain="coder" rights="read" pattern="XPS" />
 <policy domain="coder" rights="read|write" pattern="LABEL" />

1
นี่ไม่ได้ตอบคำถามจริงๆ หากคุณมีคำถามที่แตกต่างที่คุณสามารถถามได้โดยคลิกที่ถามคำถาม นอกจากนี้คุณยังสามารถเพิ่มเงินรางวัลเพื่อดึงดูดความสนใจมากขึ้นกับคำถามนี้เมื่อคุณมีเพียงพอชื่อเสียง - จากการทบทวน
Sirence

ขอบคุณสำหรับคำแนะนำ ฉันแก้ไขคำตอบของฉันในระหว่างนี้ อย่างไรก็ตามฉันรู้สึกว่ามันควรจะเป็นความเห็นในคำตอบ sNICkerssss แต่เนื่องจากฉันไม่สามารถเพิ่มมันเป็นวิธีที่ดีที่สุดที่ฉันคิดออก
lambertmular

@Sirence เป็นคำตอบให้คิดว่าแย่เพราะคัดลอกมาจากคำตอบอื่น
9ilsdx 9rvj 0lo

@ 9ilsdx9rvj0lo ความคิดเห็นของฉันมาจากก่อนการแก้ไข stackoverflow.com/posts/52700739/revisions
Sirence
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.