คำถามติดแท็ก csrf

การปลอมแปลงคำขอข้ามไซต์เป็นการโจมตีที่เป็นอันตรายเพื่อใช้ประโยชน์จากความไว้วางใจของเว็บไซต์ในเบราว์เซอร์ของผู้ใช้

5
โทเค็น CSRF คืออะไร ความสำคัญของมันคืออะไรและทำงานอย่างไร
ฉันกำลังเขียนแอปพลิเคชัน (Django มันเกิดขึ้น) และฉันแค่ต้องการทราบว่าจริงๆแล้ว "โทเค็น CSRF" คืออะไรและมันปกป้องข้อมูลอย่างไร ข้อมูลโพสต์ไม่ปลอดภัยหากคุณไม่ใช้โทเค็น CSRF หรือไม่
628 csrf 

4
ทำไมการใส่โทเค็นการป้องกัน CSRF ลงในคุกกี้จึงเป็นเรื่องปกติ
ฉันพยายามเข้าใจปัญหาทั้งหมดด้วย CSRF และวิธีที่เหมาะสมในการป้องกัน (ทรัพยากรที่ฉันได้อ่านทำความเข้าใจและเห็นด้วยกับ: OWASP CSRF ป้องกันแผ่นโกง , คำถามเกี่ยวกับ CSRF .) ตามที่ฉันเข้าใจแล้วช่องโหว่รอบ ๆ CSRF ถูกนำเสนอโดยการสันนิษฐานว่า (จากมุมมองของเว็บเซิร์ฟเวอร์) คุกกี้เซสชันที่ถูกต้องในคำขอ HTTP ขาเข้าที่สะท้อนถึงความต้องการของผู้ใช้ที่ผ่านการรับรองความถูกต้อง แต่คุกกี้ทั้งหมดสำหรับโดเมนต้นทางนั้นแนบมากับเบราว์เซอร์อย่างน่าอัศจรรย์ดังนั้นจริงๆแล้วเซิร์ฟเวอร์ทั้งหมดสามารถอนุมานจากการมีคุกกี้เซสชันที่ถูกต้องในคำขอคือคำขอนั้นมาจากเบราว์เซอร์ที่มีเซสชันที่มีการรับรองความถูกต้อง มันไม่สามารถคิดอะไรเกี่ยวกับรหัสได้อีกใช้งานในเบราว์เซอร์นั้นหรือไม่ว่ามันจะสะท้อนถึงความต้องการของผู้ใช้จริงหรือไม่ วิธีการป้องกันสิ่งนี้คือการรวมข้อมูลการรับรองความถูกต้องเพิ่มเติม ("โทเค็น CSRF") ในคำขอซึ่งดำเนินการด้วยวิธีการอื่นนอกเหนือจากการจัดการคุกกี้อัตโนมัติของเบราว์เซอร์ คุกกี้เซสชั่นรับรองความถูกต้องของผู้ใช้ / เบราว์เซอร์และโทเค็น CSRF รับรองความถูกต้องของรหัสที่ทำงานในเบราว์เซอร์ ดังนั้นหากคุณใช้คุกกี้เซสชันเพื่อตรวจสอบสิทธิ์ผู้ใช้แอปพลิเคชันเว็บของคุณคุณควรเพิ่มโทเค็น CSRF ในการตอบกลับแต่ละครั้งและต้องการโทเค็น CSRF ที่ตรงกันในแต่ละคำขอ (กลายพันธุ์) จากนั้นโทเค็น CSRF จะทำการส่งไปกลับจากเซิร์ฟเวอร์หนึ่งไปยังเบราว์เซอร์กลับไปที่เซิร์ฟเวอร์เพื่อพิสูจน์ว่าเซิร์ฟเวอร์ที่หน้านั้นร้องขอนั้นได้รับการอนุมัติจาก (สร้างโดย, แม้แต่) เซิร์ฟเวอร์นั้น ตามคำถามของฉันซึ่งเกี่ยวกับวิธีการขนส่งเฉพาะที่ใช้สำหรับโทเค็น CSRF นั้นในการไปกลับนั้น ดูเหมือนเป็นเรื่องธรรมดา (เช่นในAngularJS , Django , …
284 security  cookies  web  csrf  owasp 

17
คำเตือน: ไม่สามารถตรวจสอบรางความถูกต้องของโทเค็น CSRF
ฉันกำลังส่งข้อมูลจากมุมมองถึงตัวควบคุมด้วย AJAX และฉันได้รับข้อผิดพลาดนี้: คำเตือน: ไม่สามารถตรวจสอบความถูกต้องของโทเค็น CSRF ฉันคิดว่าฉันต้องส่งโทเค็นนี้พร้อมข้อมูล ไม่มีใครรู้ว่าฉันจะทำสิ่งนี้ได้อย่างไร แก้ไข: โซลูชันของฉัน ฉันทำได้โดยใส่รหัสต่อไปนี้ในโพสต์ AJAX: headers: { 'X-Transaction': 'POST Example', 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') },

20
การเรียก jQuery Ajax และ Html.AntiForgeryToken ()
ฉันได้ติดตั้งแอพพลิเคชั่นเพื่อลดการโจมตี CSRFจากข้อมูลที่ฉันได้อ่านในบล็อกโพสต์รอบอินเทอร์เน็ต โดยเฉพาะอย่างยิ่งโพสต์เหล่านี้เป็นตัวขับเคลื่อนของการติดตั้งของฉัน วิธีปฏิบัติที่ดีที่สุดสำหรับ ASP.NET MVCจากทีมเนื้อหานักพัฒนาเว็บ ASP.NET และ กายวิภาคของการข้ามไซต์ขอการโจมตีด้วยการปลอมแปลงจากบล็อก Phil Haack AntiForgeryToken ใน ASP.NET MVC Framework - Html.AntiForgeryToken และ ValidateAntiForgeryToken แอตทริบิวต์จาก David Hayden บล็อก โดยทั่วไปบทความและคำแนะนำเหล่านั้นบอกว่าเพื่อป้องกันการโจมตี CSRF ใคร ๆ ก็ควรใช้รหัสต่อไปนี้ 1) เพิ่ม[ValidateAntiForgeryToken]ในทุกการกระทำที่ยอมรับกริยา POST Http [HttpPost] [ValidateAntiForgeryToken] public ActionResult SomeAction( SomeModel model ) { } 2) เพิ่มตัว<%= Html.AntiForgeryToken() %>ช่วยภายในฟอร์มที่ส่งข้อมูลไปยังเซิร์ฟเวอร์ <div style="text-align:right; padding: …

18
การตรวจสอบ Django CSRF ล้มเหลวด้วยคำขอ Ajax POST
ฉันสามารถใช้ความช่วยเหลือเพื่อให้สอดคล้องกับกลไกการป้องกัน CSRF ของ Django ผ่านทางโพสต์ AJAX ของฉัน ฉันได้ทำตามคำแนะนำที่นี่: http://docs.djangoproject.com/en/dev/ref/contrib/csrf/ ฉันได้คัดลอกโค้ดตัวอย่าง AJAX ที่มีในหน้านั้นอย่างแน่นอน: http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax ฉันใส่การแจ้งเตือนการพิมพ์เนื้อหาของgetCookie('csrftoken')ก่อนxhr.setRequestHeaderโทรและมันแน่นอนมีประชากรด้วยข้อมูลบางอย่าง ฉันไม่แน่ใจว่าจะยืนยันได้อย่างไรว่าโทเค็นนั้นถูกต้อง แต่ฉันขอแนะนำให้หาและส่งบางสิ่งบางอย่าง แต่ Django ยังคงปฏิเสธโพสต์ AJAX ของฉัน นี่คือ JavaScript ของฉัน: $.post("/memorize/", data, function (result) { if (result != "failure") { get_random_card(); } else { alert("Failed to save card data."); } }); นี่เป็นข้อผิดพลาดที่ฉันเห็นจาก Django: [23 / Feb …
180 python  ajax  django  csrf 

11
รวม antiforgerytoken ใน Ajax post ASP.NET MVC
ฉันมีปัญหากับ AntiForgeryToken ด้วย ajax ฉันใช้ ASP.NET MVC 3. ฉันพยายามแก้ปัญหาในการโทร jQuery Ajax และ Html.AntiForgeryToken () การใช้โซลูชันนั้นโทเค็นกำลังถูกส่งผ่าน: var data = { ... } // with token, key is '__RequestVerificationToken' $.ajax({ type: "POST", data: data, datatype: "json", traditional: true, contentType: "application/json; charset=utf-8", url: myURL, success: function (response) { ... }, error: function (response) …

4
แบบฟอร์มเข้าสู่ระบบจำเป็นต้องมีโทเค็นต่อต้านการโจมตี CSRF หรือไม่
จากสิ่งที่ฉันได้เรียนรู้มาจนถึงจุดประสงค์ของโทเค็นคือเพื่อป้องกันไม่ให้ผู้โจมตีปลอมแปลงการส่งแบบฟอร์ม ตัวอย่างเช่นหากเว็บไซต์มีแบบฟอร์มที่ใส่รายการเพิ่มลงในตะกร้าสินค้าของคุณและผู้โจมตีสามารถส่งสแปมตะกร้าสินค้าของคุณด้วยรายการที่คุณไม่ต้องการ เรื่องนี้สมเหตุสมผลเพราะอาจมีอินพุตที่ถูกต้องหลายอย่างสำหรับแบบฟอร์มตะกร้าสินค้าผู้โจมตีทั้งหมดจะต้องทำคือรู้ว่ารายการที่เว็บไซต์ขาย ฉันเข้าใจว่าโทเค็นทำงานอย่างไรและเพิ่มความปลอดภัยในกรณีนี้เพราะพวกเขามั่นใจว่าผู้ใช้ได้กรอกและกดปุ่ม "ส่ง" ของแบบฟอร์มสำหรับแต่ละรายการที่เพิ่มลงในรถเข็น อย่างไรก็ตามโทเค็นจะเพิ่มความปลอดภัยให้กับฟอร์มการเข้าสู่ระบบของผู้ใช้ซึ่งต้องใช้ชื่อผู้ใช้และรหัสผ่านหรือไม่ เนื่องจากชื่อผู้ใช้และรหัสผ่านนั้นแตกต่างกันมากผู้โจมตีจึงต้องรู้ทั้งคู่เพื่อให้การปลอมตัวเข้าสู่ระบบทำงานได้ (แม้ว่าคุณจะไม่ได้ติดตั้งโทเค็น) และหากผู้โจมตีรู้แล้วเขาก็สามารถลงชื่อเข้าใช้เว็บไซต์ได้ ตัวเขาเอง. ไม่ต้องพูดถึงการโจมตี CSRF ที่ทำให้ผู้ใช้ลงชื่อเข้าใช้ด้วยตนเองจะไม่มีวัตถุประสงค์ในทางปฏิบัติใด ๆ ความเข้าใจของฉันเกี่ยวกับการโจมตีและโทเค็น CSRF ถูกต้องหรือไม่ และพวกเขาไม่มีประโยชน์อะไรสำหรับแบบฟอร์มการเข้าสู่ระบบของผู้ใช้ตามที่ฉันสงสัย?
161 php  token  csrf 

3
จะเก็บ JWT ในเบราว์เซอร์ได้ที่ไหน จะป้องกัน CSRF ได้อย่างไร
ฉันรู้ว่าการตรวจสอบตามคุกกี้ สามารถใช้การตั้งค่า SSL และ HttpOnly เพื่อป้องกันการตรวจสอบตามคุกกี้จาก MITM และ XSS อย่างไรก็ตามจำเป็นต้องใช้มาตรการพิเศษเพิ่มเติมเพื่อป้องกันจาก CSRF พวกมันซับซ้อนเล็กน้อย ( อ้างอิง ) เมื่อเร็ว ๆ นี้ฉันค้นพบว่า JSON Web Token (JWT) ค่อนข้างร้อนในฐานะโซลูชั่นสำหรับการตรวจสอบสิทธิ์ ฉันรู้เกี่ยวกับการเข้ารหัสถอดรหัสและตรวจสอบ JWT อย่างไรก็ตามฉันไม่เข้าใจว่าทำไมบางเว็บไซต์ / บทช่วยสอนไม่จำเป็นต้องมีการป้องกัน CSRF หากใช้ JWT ฉันได้อ่านค่อนข้างมากและพยายามสรุปปัญหาด้านล่าง ฉันแค่ต้องการให้ใครบางคนสามารถให้ภาพรวมของ JWT และชี้แจงแนวคิดที่ฉันเข้าใจผิดเกี่ยวกับ JWT หาก JWT ถูกเก็บไว้ในคุกกี้ฉันคิดว่าเป็นเช่นเดียวกับการรับรองความถูกต้องที่อิงกับคุกกี้ยกเว้นว่าเซิร์ฟเวอร์ไม่จำเป็นต้องมีเซสชันเพื่อตรวจสอบคุกกี้ / โทเค็น ยังมีความเสี่ยงเกี่ยวกับ CSRF หากไม่มีมาตรการพิเศษดำเนินการ JWT ไม่ถูกจัดเก็บในคุกกี้หรือไม่? หาก JWT ถูกเก็บไว้ใน localStorage …

3
แบบฟอร์มข้ามโดเมน POSTing
ฉันเคยเห็นบทความและโพสต์ทั่ว (รวมถึง SO) ในหัวข้อนี้และความเห็นที่แพร่หลายคือนโยบายต้นกำเนิดเดียวกันป้องกันฟอร์ม POST ข้ามโดเมน คนเพียงสถานที่ที่ผมเคยเห็นชี้ให้เห็นว่านโยบายเดียวกันแหล่งกำเนิดไม่ได้นำไปใช้กับรูปแบบการโพสต์อยู่ที่นี่ ฉันต้องการคำตอบจาก "ทางการ" หรือแหล่งข้อมูลทางการ ตัวอย่างเช่นไม่มีใครรู้ RFC ที่ระบุว่ามีต้นกำเนิดเดียวกันหรือไม่มีผลต่อฟอร์ม POST หรือไม่ คำชี้แจง : ฉันไม่ได้ถามว่าสามารถสร้าง GET หรือ POST และส่งไปยังโดเมนใด ๆ ได้หรือไม่ ฉันกำลังถาม: ถ้า Chrome, IE หรือ Firefox จะอนุญาตเนื้อหาจากโดเมน 'Y' เพื่อส่ง POST ไปยังโดเมน 'X' ถ้าเซิร์ฟเวอร์ที่รับ POST จะเห็นค่าฟอร์มใด ๆ เลย ฉันพูดแบบนี้เพราะส่วนใหญ่ของการสนทนาออนไลน์บันทึกผู้ทดสอบบอกว่าเซิร์ฟเวอร์ได้รับการโพสต์ แต่ค่าแบบฟอร์มทั้งหมดว่าง / ถอดออก เอกสารอย่างเป็นทางการใด ๆ (เช่น RFC) อธิบายว่าพฤติกรรมที่คาดหมายคืออะไร …

8
Rails CSRF Protection + Angular.js: protect_from_forgery ทำให้ฉันออกจากระบบ POST
หากprotect_from_forgeryมีการกล่าวถึงตัวเลือกใน application_controller ฉันสามารถเข้าสู่ระบบและดำเนินการตามคำขอ GET ใด ๆ ได้ แต่ในคำขอ POST แรก Rails จะรีเซ็ตเซสชันซึ่งจะทำให้ฉันไม่สามารถใช้งานได้ ฉันprotect_from_forgeryปิดตัวเลือกนี้ชั่วคราว แต่ต้องการใช้กับ Angular.js มีวิธีทำบ้างไหม

2
CSRF Token จำเป็นเมื่อใช้ Stateless (= Sessionless) Authentication?
จำเป็นหรือไม่ที่จะต้องใช้การป้องกัน CSRF เมื่อแอปพลิเคชันต้องอาศัยการพิสูจน์ตัวตนแบบไร้สัญชาติ (โดยใช้บางอย่างเช่น HMAC) ตัวอย่าง: เรามีแอพหน้าเดียว (มิฉะนั้นเราต้องต่อท้ายโทเค็นในแต่ละลิงค์: <a href="...?token=xyz">...</a>. POST /authผู้ใช้จะตรวจสอบตัวเองใช้ ในการตรวจสอบสิทธิ์สำเร็จเซิร์ฟเวอร์จะส่งคืนโทเค็นบางส่วน โทเค็นจะถูกจัดเก็บผ่าน JavaScript ในตัวแปรบางตัวภายในแอพหน้าเดียว โทเค็นนี้จะใช้ในการ จำกัด การเข้าถึง URL /adminที่ชอบ โทเค็นจะถูกส่งภายใน HTTP Headers เสมอ ไม่มีเซสชัน Http และไม่มีคุกกี้ เท่าที่ฉันเข้าใจมี (?!) ไม่ควรใช้การโจมตีข้ามไซต์เนื่องจากเบราว์เซอร์จะไม่เก็บโทเค็นและด้วยเหตุนี้จึงไม่สามารถส่งไปยังเซิร์ฟเวอร์โดยอัตโนมัติได้ (นั่นคือสิ่งที่จะเกิดขึ้นเมื่อใช้คุกกี้ / เซสชั่น) ฉันพลาดอะไรไปรึเปล่า?

13
Django Rest Framework ลบ csrf
ฉันรู้ว่ามีคำตอบเกี่ยวกับ Django Rest Framework แต่ฉันไม่พบวิธีแก้ปัญหาของฉัน ฉันมีแอปพลิเคชันที่มีการตรวจสอบสิทธิ์และฟังก์ชันบางอย่าง ฉันได้เพิ่มแอพใหม่ลงไปซึ่งใช้ Django Rest Framework ฉันต้องการใช้ไลบรารีในแอพนี้เท่านั้น นอกจากนี้ฉันต้องการส่งคำขอ POST และฉันจะได้รับคำตอบนี้เสมอ: { "detail": "CSRF Failed: CSRF token missing or incorrect." } ฉันมีรหัสต่อไปนี้: # urls.py from django.conf.urls import patterns, url urlpatterns = patterns( 'api.views', url(r'^object/$', views.Object.as_view()), ) # views.py from rest_framework.views import APIView from rest_framework.response import Response from …

18
“ เพจหมดอายุเนื่องจากไม่มีการใช้งาน” - Laravel 5.5
หน้าลงทะเบียนของฉันแสดงแบบฟอร์มอย่างถูกต้องโดยมี CsrfToken ( {{ csrf_field() }}) อยู่ในแบบฟอร์ม) แบบฟอร์ม HTML <form class="form-horizontal registration-form" novalidate method="POST" action="{{ route('register') }}"> {{ csrf_field() }} .... </form> ฉันใช้การรับรองความถูกต้องแบบ inbuilt สำหรับผู้ใช้ ไม่ได้เปลี่ยนแปลงอะไรเลยนอกจากเส้นทางและการเปลี่ยนเส้นทาง เมื่อฉันส่งแบบฟอร์ม (หลังจากโหลดซ้ำแล้วด้วย) แสดงว่าหน้านี้หมดอายุเนื่องจากไม่มีการใช้งาน โปรดรีเฟรชและลองอีกครั้ง ข้อผิดพลาด เป็นของฉันฉันคิดถึงสิ่งเล็ก ๆ น้อย ๆ แต่ไม่แน่ใจว่าคืออะไร. ความช่วยเหลือใด ๆ อัปเดต พบปัญหา โปรแกรมควบคุมเซสชันถูกตั้งค่าเป็นอาร์เรย์ เปลี่ยนเป็นไฟล์แล้วข้อผิดพลาดหายไปแล้ว แต่จะเกิดอะไรขึ้นถ้าฉันใช้อาร์เรย์?
111 php  laravel  csrf  laravel-5.5 

3
ปิดโทเค็น CSRF ในราง 3
ฉันมีแอพทางรถไฟที่ให้บริการ API บางตัวกับแอปพลิเคชัน iPhone ฉันต้องการเพียงแค่โพสต์บนทรัพยากรโดยไม่ต้องสนใจว่าจะได้รับโทเค็น CSRF ที่ถูกต้อง ฉันลองใช้วิธีการบางอย่างที่ฉันเห็นที่นี่ใน stackoverflow แต่ดูเหมือนว่าจะไม่ทำงานบนราง 3 อีกต่อไป ขอบคุณที่ช่วยตอบ

2
การป้องกัน CSRF ด้วยส่วนหัว CORS Origin เทียบกับโทเค็น CSRF
คำถามนี้เกี่ยวกับการป้องกันการโจมตีด้วยการปลอมแปลงคำขอข้ามไซต์เท่านั้น โดยเฉพาะเกี่ยวกับ: การป้องกันผ่านส่วนหัว Origin (CORS) ดีเท่ากับการป้องกันผ่านโทเค็น CSRF หรือไม่? ตัวอย่าง: อลิซเข้าสู่ระบบ (โดยใช้คุกกี้) ด้วยเบราว์เซอร์ของเธอไปที่ " https://example.com " ฉันคิดว่าเธอใช้เบราว์เซอร์ที่ทันสมัย อลิซไปที่ " https://evil.com " และโค้ดฝั่งไคลเอ็นต์ของ evil.com ดำเนินการขอ " https://example.com " (สถานการณ์ CSRF แบบคลาสสิก) ดังนั้น: หากเราไม่ตรวจสอบส่วนหัว Origin (ฝั่งเซิร์ฟเวอร์) และไม่มีโทเค็น CSRF เรามีช่องโหว่ด้านความปลอดภัย CSRF หากเราตรวจสอบโทเค็น CSRF แสดงว่าเราปลอดภัย (แต่น่าเบื่อเล็กน้อย) หากเราตรวจสอบส่วนหัว Origin คำขอจากโค้ดฝั่งไคลเอ็นต์ของ evil.com ควรถูกบล็อกเช่นเดียวกับที่ทำเมื่อใช้โทเค็น CSRF - ยกเว้นหากเป็นไปได้ที่โค้ดของ evil.com …

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