การเก็บ jwt ใน localStorage ด้วย reactjs ปลอดภัยหรือไม่?


147

ฉันกำลังสร้างแอปพลิเคชันหน้าเดียวโดยใช้ reactjs ฉันอ่านว่าสาเหตุหลายประการที่ไม่ได้ใช้ localStorage เป็นเพราะช่องโหว่ XSS เนื่องจาก React หนีอินพุตทั้งหมดของผู้ใช้ตอนนี้จะปลอดภัยหรือไม่ที่จะใช้ localStorage


4
ชอบ Session Storage
Praneet Rohida


3
"แนะนำว่าอย่าเก็บข้อมูลที่ละเอียดอ่อนไว้ในที่จัดเก็บในตัวเครื่อง" -OWASP "เก็บไว้ในหน่วยความจำโดยไม่ต้องดำเนินการใด ๆ " -Auth0
avejidah

ฉันคิดว่า Auth0 อาจเปลี่ยนมุมมองของพวกเขาในเรื่องนี้ - เพราะฉันไม่สามารถหาคำพูดที่กล่าวถึงในลิงค์ที่ให้ไว้
DauleDK

คำตอบ:


141

ในแอปพลิเคชันหน้าเดียวที่ทันสมัยส่วนใหญ่เราต้องเก็บโทเค็นไว้ที่ฝั่งไคลเอ็นต์ (กรณีการใช้งานบ่อยที่สุด - เพื่อให้ผู้ใช้เข้าสู่ระบบหลังจากรีเฟรชหน้า)

มีตัวเลือกทั้งหมด 2 ตัวเลือก: ที่เก็บข้อมูลเว็บ (ที่เก็บเซสชัน, ที่จัดเก็บในตัวเครื่อง) และคุกกี้ฝั่งไคลเอ็นต์ ตัวเลือกทั้งสองใช้กันอย่างแพร่หลาย แต่นี่ไม่ได้หมายความว่าพวกเขาจะปลอดภัยมาก

Tom Abbott สรุปความปลอดภัย JWT sessionStorage และ localStorage ได้ดี :

Web Storage (localStorage / sessionStorage) สามารถเข้าถึงได้ผ่าน JavaScript ในโดเมนเดียวกัน ซึ่งหมายความว่าการทำงาน JavaScript ใด ๆ บนเว็บไซต์ของคุณจะมีการเข้าถึงที่จัดเก็บข้อมูลเว็บและเพราะเรื่องนี้อาจจะเป็นความเสี่ยงที่จะสคริปต์ข้ามไซต์โจมตี (XSS) สั้น ๆ XSS เป็นประเภทของช่องโหว่ที่ผู้โจมตีสามารถฉีด JavaScript ที่จะทำงานบนหน้าของคุณ การโจมตี XSS พื้นฐานพยายามฉีด JavaScript ผ่านอินพุตแบบฟอร์มโดยที่ผู้โจมตีใส่<script>alert('You are Hacked');</script>ลงในแบบฟอร์มเพื่อดูว่าเบราว์เซอร์นั้นรันโดยผู้ใช้รายอื่นหรือไม่

เพื่อป้องกัน XSS การตอบสนองทั่วไปคือการหลบหนีและเข้ารหัสข้อมูลที่ไม่น่าเชื่อถือทั้งหมด ตอบสนอง (ส่วนใหญ่) ทำเพื่อคุณ! นี่เป็นโอกาสอันดีที่การอภิปรายเกี่ยวกับการป้องกันช่องโหว่ XSS เท่าใดจะตอบสนองความรับผิดชอบในการ

แต่นั่นไม่ครอบคลุมถึงช่องโหว่ทั้งหมด! อีกภัยคุกคามที่อาจเกิดขึ้นคือการใช้งานของ JavaScript โฮสต์บน CDNs หรือโครงสร้างพื้นฐานนอก

นี่คือทอมอีกครั้ง:

เว็บแอพที่ทันสมัยประกอบด้วยห้องสมุด JavaScript ของบุคคลที่สามสำหรับการทดสอบ A / B การวิเคราะห์ช่องทาง / การตลาดและโฆษณา เราใช้ตัวจัดการแพคเกจเช่น Bower เพื่อนำเข้ารหัสของผู้อื่นในแอพของเรา

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

ดังนั้นข้อสรุปของฉันคือเป็นกลไกการจัดเก็บ, Web Storage ไม่ได้บังคับใช้มาตรฐานการรักษาความปลอดภัยใด ๆ ระหว่างการถ่ายโอน ใครก็ตามที่อ่านที่เก็บข้อมูลบนเว็บและใช้งานนั้นจะต้องดำเนินการตรวจสอบสถานะของตนเองเพื่อให้แน่ใจว่าพวกเขาส่ง JWT ผ่าน HTTPS และไม่ใช้ HTTP


10
ดังนั้นถ้าฉันเข้าใจคุณอย่างถูกต้องคุณแนะนำคุกกี้หรือไม่ เพียงเพื่อให้แน่ใจ ขอบคุณ!
SuperLemon

7
ใช่. ฉันแนะนำคุกกี้เนื่องจากความปลอดภัยเพิ่มเติมที่มีให้และความง่ายในการป้องกัน CSRF ด้วยกรอบงานเว็บที่ทันสมัย Web Storage (localStorage / sessionStorage) มีความเสี่ยงต่อ XSS มีพื้นที่ผิวการโจมตีที่ใหญ่ขึ้นและสามารถส่งผลกระทบต่อผู้ใช้แอปพลิเคชันทุกคนในการโจมตีที่ประสบความสำเร็จ
Kaloyan Kosev

48
ฉันคิดว่าคุณมีสิ่งเหล่านี้ผสมกันอยู่ไหม? เฟรมเวิร์กเว็บสมัยใหม่มีการป้องกันที่แข็งแกร่งในตัวสำหรับ XSS แต่ไม่มากสำหรับ xsrf การป้องกันที่ดีที่สุดสำหรับ xsrf คือการหลีกเลี่ยงการใช้คุกกี้อย่างสมบูรณ์ ที่จัดเก็บในตัวเครื่องนั้นถูก Sandboxed ไปยังโดเมนเฉพาะซึ่งหมายความว่าโดเมนของผู้โจมตีไม่สามารถเข้าถึงได้ เฟรมเวิร์กเว็บป้องกัน xss โดยการเข้ารหัสและทำให้อินพุตของผู้ใช้ปลอดภัยโดยอัตโนมัติ ดูangular.io/guide/security
mikejones1477

47
หาก "คุณแนะนำให้ใช้คุกกี้ [แทน]" ฉันจะขอแนะนำให้คุณพูดคำใดคำหนึ่งได้หรือไม่? แทนที่จะแสดงความคิดเห็น?
spechter

7
ฉันมาสายนิดหน่อยเพิ่งอ่านหัวข้อเหล่านี้ตอนนี้และฉันสับสนเกี่ยวกับสิ่งหนึ่งผู้คนจำนวนมากพูดคุยเกี่ยวกับคุณได้รับการป้องกันด้วยคุกกี้ http เท่านั้นหากคุณประกอบด้วย Xss แต่ถ้าคุณมี xss atacker ไม่จำเป็นต้องขโมยอะไรเลยเขาสามารถสร้างโพสต์จากหน้าเว็บเพื่อปลอมตัวเป็นคุณโดยใช้คุกกี้นั้น (แม้ว่าเขาจะไม่สามารถขโมยได้) ฉันพลาดอะไรไปรึเปล่า???
Borja Alvarez

36

ฉันรู้ว่านี่เป็นคำถามเก่า แต่ตามสิ่งที่ @ mikejones1477 พูดว่า front front front ที่ทันสมัยและกรอบการทำงานช่วยให้คุณป้องกัน XSS ได้ เหตุผลที่คุกกี้ไม่ปลอดภัยโดยใช้ข้อมูลรับรองคือคุกกี้ไม่ป้องกัน CSRF เมื่อ localStorage ทำเช่นกัน (โปรดจำไว้ว่าจาวาสคริปต์สามารถเข้าถึงคุกกี้ได้เช่นกันดังนั้น XSS ไม่ใช่ปัญหาใหญ่ที่นี่) คำตอบนี้จะกลับมาทำงานอีกครั้ง

เหตุผลที่จัดเก็บโทเค็นการตรวจสอบความถูกต้องในที่จัดเก็บในตัวเครื่องและเพิ่มไปยังแต่ละคำขอด้วยตนเองเพื่อป้องกัน CSRF คือคำสำคัญ: คู่มือ เนื่องจากเบราว์เซอร์ไม่ได้ส่งโทเค็นการตรวจสอบความถูกต้องนั้นโดยอัตโนมัติหากฉันไปที่ evil.com และจัดการเพื่อส่ง POST http://example.com/delete-my-accountมันจะไม่สามารถส่งโทเค็น authn ของฉันได้ดังนั้น คำขอจะถูกละเว้น

แน่นอน httpOnly เป็นจอกศักดิ์สิทธิ์ แต่คุณไม่สามารถเข้าถึงได้จาก reactjs หรือกรอบ js ใด ๆ ข้างคุณยังมีช่องโหว่ CSRF แนะนำของฉันจะ localStorage หรือถ้าคุณต้องการที่จะใช้คุกกี้ให้แน่ใจว่า implemeting วิธีการแก้ปัญหาบางอย่างที่คุณปัญหา CSRF เช่น Django ไม่

เกี่ยวกับ CDN ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใช้ CDN แปลก ๆ เช่น CDN เช่น google หรือ bootstrap ที่เตรียมไว้ได้รับการดูแลโดยชุมชนและไม่มีรหัสที่เป็นอันตรายหากคุณไม่แน่ใจคุณสามารถตรวจสอบได้ฟรี


2
ไม่แน่ใจว่าทำไมคุณถึงบอกว่าคุณยังคงเสี่ยงต่อ CSRF ในขณะที่ใช้คุกกี้ การใช้คุกกี้กับธงHttpOnly SameSite=strictและsecureจะเก็บข้อมูลที่คุณตั้งไว้ในคุกกี้อย่างปลอดภัย จาก XSS คุณต้องแน่ใจว่า JavaScript ของคุณไม่ทราบข้อมูลที่เกี่ยวข้องกับการตรวจสอบสิทธิ์เช่นโทเค็นและรหัสผ่าน (หมายถึงไม่เก็บไว้ในที่เก็บข้อมูลเว็บ) - หากคุณนำเข้าสคริปต์ที่เป็นอันตรายสคริปต์นั้นจะไม่สามารถเข้าถึงได้ ข้อมูลที่ละเอียดอ่อน ใช่คุณจะไม่สามารถเข้าถึงโทเค็นผ่าน JS ได้ แต่นั่นไม่น่าจะมีปัญหา
miphe

@ miphe นั่นคือสิ่งที่ฉันพูด แต่ OP กำลังขอวิธีการเข้าถึงจาก javascript นี่ฉันแค่อธิบายว่าอะไรคือวิธีที่ดีที่สุดในการจัดเก็บโทเค็นที่เข้าถึงได้จาก js
Mauricio Cortazar

21

โดยทั่วไปมันก็โอเคที่จะเก็บ JWT ของคุณใน localStorage ของคุณ

และฉันคิดว่านี่เป็นวิธีที่ดี หากเรากำลังพูดถึง XSS, XSS โดยใช้ CDN ก็เป็นความเสี่ยงที่อาจเกิดขึ้นกับการเข้าสู่ระบบ / รหัสผ่านของลูกค้าของคุณเช่นกัน การจัดเก็บข้อมูลในที่จัดเก็บในตัวเครื่องจะป้องกันการโจมตีจาก CSRF เป็นอย่างน้อย

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

การจัดเก็บอีกครั้งก็โอเคเสี่ยงต่อ XSS, CSRF, ... ไม่ได้


2
นี่คือเหตุผลที่มีความปลอดภัยในการทำดังต่อไปนี้: - เก็บ JWT ในคุกกี้เพื่อให้ไม่สามารถเรียกคืนจาก XSS - จัดเก็บโทเค็น CSRF ใน localStorage ดังนั้นจึงไม่สามารถเรียกคืนจาก CSRF
Alejandro Cavazos

33
คุณนำเสนอจุดที่ดี: หากไซต์ของคุณใช้งานสคริปต์ที่เป็นอันตรายแสดงว่ามันเป็นเกมต่อไป พวกเขาสามารถผูกเหตุการณ์ keydown เพื่อป้อนรหัสผ่านประเภทและขโมยข้อมูลการตรวจสอบผู้ใช้ของคุณด้วยวิธีนี้ (ซึ่งแย่กว่าการขโมย JWT auth toh token มาก) การจัดเก็บ JWTs ใน localStorage นั้นทำได้เพียงเล็กน้อยเพื่อเพิ่มความเสียหายที่อาจเกิดขึ้นได้จาก XSS
Carl Leth

8

ไม่ปลอดภัยหากคุณใช้ CDN:

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

ผ่านทางStormpath

สคริปต์ใด ๆ ที่คุณต้องการจากภายนอกอาจถูกบุกรุกและสามารถดึง JWTS จากที่เก็บข้อมูลของลูกค้าของคุณและส่งข้อมูลส่วนบุคคลกลับไปยังเซิร์ฟเวอร์ของผู้โจมตี


6
ถ้าฉันไม่ได้วางแผนจะใช้ cdns จะปลอดภัยไหม?

1
ผู้เขียนบทความไม่เคยแยกความแตกต่างระหว่าง XSS บนไซต์ที่ให้บริการผ่าน CDN หรือโดยตรงจากเซิร์ฟเวอร์กลาง คำอธิบายของคุณที่นี่จะใช้ไม่เหมือนกันไม่ใช่เฉพาะกับ CDN
ว.

5

Localstorage ได้รับการออกแบบให้สามารถเข้าถึงได้โดย javascript ดังนั้นจึงไม่มีการป้องกัน XSS ใด ๆ ดังที่กล่าวไว้ในคำตอบอื่น ๆ มีหลายวิธีที่เป็นไปได้ที่จะทำการโจมตี XSS ซึ่งการจัดเก็บในพื้นที่จะไม่ได้รับการป้องกันโดยค่าเริ่มต้น

อย่างไรก็ตามคุกกี้มีค่าสถานะความปลอดภัยซึ่งป้องกันการโจมตี XSS และ CSRF การตั้งค่าสถานะ HttpOnly ป้องกันจาวาสคริปต์ฝั่งไคลเอ็นต์ไม่ให้เข้าถึงคุกกี้การตั้งค่าความปลอดภัยอนุญาตให้เบราว์เซอร์ถ่ายโอนคุกกี้ผ่าน ssl เท่านั้นและการตั้งค่าสถานะ SameSite ทำให้มั่นใจได้ว่าคุกกี้ถูกส่งไปยังจุดเริ่มต้นเท่านั้น แม้ว่าฉันเพิ่งจะตรวจสอบและปัจจุบัน SameSite รองรับเฉพาะใน Opera และ Chrome ดังนั้นเพื่อปกป้องจาก CSRF จะดีกว่าถ้าใช้กลยุทธ์อื่น ตัวอย่างเช่นการส่งโทเค็นที่เข้ารหัสในคุกกี้อื่นที่มีข้อมูลผู้ใช้สาธารณะบางส่วน

ดังนั้นคุกกี้จึงเป็นตัวเลือกที่ปลอดภัยยิ่งขึ้นสำหรับการจัดเก็บข้อมูลการตรวจสอบสิทธิ์


ไม่สามารถรับ: HttpOnly สามารถปกป้องคุณจาก CSRF ได้อย่างไร
Alex Lyalka

@AlexLyalka ไม่ได้หมายความว่า HttpOnly ป้องกันจาก CSRF มากกว่าการตั้งค่าสถานะคุกกี้ทั้งหมดเข้าด้วยกันสามารถป้องกันจาก XSS และ CSRF SameSite ให้การป้องกันบางอย่างเพื่อป้องกันไม่ให้คุกกี้ถูกส่งไปยังไซต์ที่แตกต่างจากแหล่งกำเนิด แม้ว่าฉันเพิ่งตรวจสอบและสนับสนุนการตั้งค่าสถานะที่ต่ำมาก นอกจากนี้ยังเป็นไปได้ที่จะหลีกเลี่ยง CSRF ด้วยโทเค็นการเข้ารหัสที่แยกต่างหากพร้อมกับการระบุผู้ใช้บางส่วนซึ่งถูกตรวจสอบบนเซิร์ฟเวอร์
Ivan

1
ถ้ามีใครสามารถรันโค้ดในเว็บของคุณไม่ได้เขาแค่โพสต์เว็บของคุณในนามของผู้ใช้ของคุณ? ตกลงเขาไม่สามารถรับเฉพาะคุกกี้ http ของคุณ แต่เขาสามารถโทรออกโดยใช้คุกกี้เหล่านั้นดังนั้นฉันจึงยังไม่เห็นจุดนั้น
Borja Alvarez

2
@BorjaAlverez มีความแตกต่างใหญ่ ใช่ผ่าน XSS ใครบางคนสามารถร้องขอในนามของผู้ใช้ที่เข้าสู่ระบบ แต่การทำโทเค็นแย่ลง ตัวอย่างเช่น: โทเค็นอาจให้การเข้าถึง API ที่แอปพลิเคชันไคลเอนต์ไม่ได้ใช้ โทเค็นอาจมีข้อมูลอื่น ๆ เกี่ยวกับผู้ใช้ (ที่อยู่อีเมลโปรไฟล์และทุน) สามารถใช้โทเค็นในการเล่นซ้ำการโจมตีแอปพลิเคชันของคุณ โทเค็นสามารถส่งผ่านเป็นid_token_hintเซิร์ฟเวอร์ OIDC รับรองความถูกต้อง; โทเค็นให้ข้อมูลผู้โจมตีเกี่ยวกับรหัสที่ใช้ในการเซ็นชื่อ ฯลฯ
avejidah

3

วิธีที่จะดูสิ่งนี้คือการพิจารณาระดับความเสี่ยงหรืออันตราย

คุณกำลังสร้างแอพโดยไม่มีผู้ใช้ POC / MVP หรือไม่? คุณเป็นผู้เริ่มต้นที่ต้องการออกสู่ตลาดและทดสอบแอปของคุณอย่างรวดเร็วหรือไม่? ถ้าใช่ฉันอาจจะใช้โซลูชันที่ง่ายที่สุดและรักษาโฟกัสในการหาตลาดที่เหมาะสม ใช้ localStorage เป็นวิธีที่ง่ายกว่าในการนำไปใช้

คุณกำลังสร้าง v2 ของแอปที่มีผู้ใช้ที่ใช้งานอยู่ทุกวันหรือแอพที่คน / ธุรกิจต้องพึ่งพาอย่างมาก การแฮ็คหมายถึงมีที่ว่างน้อยหรือไม่มีเลยสำหรับการกู้คืน? หากเป็นเช่นนั้นฉันจะพิจารณาการอ้างอิงของคุณอย่างหนักและพิจารณาจัดเก็บข้อมูลโทเค็นในคุกกี้แบบ http เท่านั้น

การใช้ทั้ง localStorage และที่เก็บคุกกี้ / เซสชันมีข้อดีและข้อเสียของตัวเอง

ตามที่ระบุไว้โดยคำตอบแรก: หากแอปพลิเคชันของคุณมีช่องโหว่ XSS จะไม่ปกป้องผู้ใช้ของคุณ เนื่องจากแอพพลิเคชั่นที่ทันสมัยส่วนใหญ่มีการอ้างอิงมากกว่าหนึ่งโหลหรือมากกว่านั้นมันจึงยากที่จะรับประกันได้ว่าแอพพลิเคชั่นหนึ่งในการอ้างอิงของคุณจะไม่เสี่ยงต่อการเกิด XSS

หากแอปพลิเคชันของคุณมีช่องโหว่ XSS และแฮ็กเกอร์สามารถใช้ประโยชน์จากมันแฮ็กเกอร์จะสามารถดำเนินการในนามของผู้ใช้ของคุณ แฮ็กเกอร์สามารถดำเนินการตามคำขอ GET / POST โดยดึงโทเค็นจาก localStorage หรือสามารถดำเนินการตามคำขอ POST ได้หากโทเค็นถูกเก็บไว้ในคุกกี้แบบ http เท่านั้น

ข้อเสียเพียงอย่างเดียวของการจัดเก็บโทเค็นของคุณในที่จัดเก็บในตัวเครื่องคือแฮ็กเกอร์จะสามารถอ่านโทเค็นของคุณได้


1

ไม่ยอมรับ localStorage หรือคุกกี้ httpOnly อย่างเดียวหรือ ในเรื่องที่เกี่ยวกับห้องสมุดของบุคคลที่ 3 ที่ถูกบุกรุกทางออกเดียวที่ฉันรู้ที่จะช่วยลด / ป้องกันไม่ให้ข้อมูลที่สำคัญจากการถูกขโมยจะมีผลบังคับใช้Subresource ความซื่อสัตย์

Subresource Integrity (SRI) เป็นคุณลักษณะด้านความปลอดภัยที่ช่วยให้เบราว์เซอร์ตรวจสอบว่ามีการส่งมอบทรัพยากร (ตัวอย่างเช่นจาก CDN) โดยไม่มีการจัดการที่ไม่คาดคิด มันทำงานได้โดยอนุญาตให้คุณจัดเตรียมแฮชการเข้ารหัสที่ทรัพยากรที่ดึงมาต้องตรงกัน

ตราบใดที่ห้องสมุดบุคคลที่สามถูกบุกรุกใช้งานบนเว็บไซต์ของคุณคีย์ล็อกเกอร์สามารถเริ่มรวบรวมข้อมูลเช่นชื่อผู้ใช้รหัสผ่านและสิ่งอื่นใดที่คุณป้อนเข้าสู่เว็บไซต์

httpOnly cookie จะป้องกันการเข้าถึงจากคอมพิวเตอร์เครื่องอื่น แต่จะไม่ทำอะไรเลยเพื่อป้องกันไม่ให้แฮกเกอร์จัดการคอมพิวเตอร์ของผู้ใช้


-10

มีความปลอดภัยในการเก็บโทเค็นของคุณใน localStorage ตราบใดที่คุณเข้ารหัส ด้านล่างนี้เป็นข้อมูลโค้ดที่ถูกบีบอัดซึ่งแสดงหนึ่งในหลายวิธีที่คุณสามารถทำได้

    import SimpleCrypto from 'simple-crypto-js';

    const saveToken = (token = '') => {
          const encryptInit = new SimpleCrypto('PRIVATE_KEY_STORED_IN_ENV_FILE');
          const encryptedToken = encryptInit.encrypt(token);

          localStorage.setItem('token', encryptedToken);
     }

จากนั้นก่อนใช้โทเค็นของคุณจะถอดรหัสโดยใช้ PRIVATE_KEY_STORED_IN_ENV_FILE


@HassanAlthaf คุณพลาดจุดที่นี่จะไม่มีแอพพิสูจน์ความปลอดภัย 100% แค่คุณลดพื้นผิวการโจมตีและอย่างน้อยไฟล์ env จะไม่ถูกเผยแพร่บน GitHub โดยตรง นอกจากนี้รหัสที่รวมมาจะถูกทำให้ยุ่งเหยิงและยุ่งเหยิงทำให้ผู้โจมตีหามันยาก
Kidali Kevin

คีย์ส่วนตัวไม่ควรถูกเปิดเผย คุณจะประนีประนอม API ทั้งหมด
Hassan Althaf

จากประสบการณ์ของฉันหากคุณทำสิ่งต่าง ๆ อย่างชาญฉลาดและถูกต้องกุญแจส่วนตัวของคุณจะไม่ถูกเปิดเผยในโครงสร้างการผลิตหากเป็นเช่นนั้นภาพหน้าจอเพื่อรองรับสิ่งนี้หรือแม้กระทั่ง URL
Kidali Kevin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.