FixVibe
Covered by FixVibehigh

CSRF-ийн хамгаалалт: Төрийн зөвшөөрөлгүй өөрчлөлтөөс хамгаалах

Сайт хоорондын хүсэлтийг хуурамчаар үйлдэх (CSRF) нь вэб програмуудад ихээхэн аюул заналхийлсэн хэвээр байна. Энэхүү судалгаа нь Django гэх мэт орчин үеийн фрэймворкууд хамгаалалтыг хэрхэн хэрэгжүүлдэг, SameSite зэрэг хөтчийн түвшний шинж чанарууд нь зөвшөөрөлгүй хүсэлтээс хэрхэн гүн хамгаалалтаар хангадаг талаар судалсан.

CWE-352

Нөлөөлөл

Сайт хоорондын хүсэлтийг хуурамчаар үйлдэх (CSRF) нь халдагчид хохирогчийн хөтчийг хууран мэхэлж, хохирогчийг одоогоор баталгаажуулсан өөр вэбсайт дээр хүсээгүй үйлдэл хийх боломжийг олгодог. Хөтөчүүд хүсэлтэд күүки гэх мэт орчны итгэмжлэлүүдийг автоматаар оруулдаг тул халдагчид нууц үг солих, өгөгдөл устгах, гүйлгээ хийх зэрэг төлөвийг өөрчлөх үйлдлүүдийг хэрэглэгчийн мэдэлгүйгээр хуурамчаар үйлдэж болно.

Үндсэн шалтгаан

CSRF-ийн үндсэн шалтгаан нь вэб хөтчийн анхдагч зан төлөв нь тухайн домэйнд хүсэлт гаргах бүрт тухайн домэйнтэй холбоотой күүки илгээдэг бөгөөд хүсэлтийн гарал үүсэл [S1]. Програмын өөрийн хэрэглэгчийн интерфэйсээс хүсэлтийг зориудаар үүсгэсэн гэдгийг тодорхой баталгаажуулаагүй тохиолдолд сервер нь хэрэглэгчийн хууль ёсны үйлдэл болон хуурамч үйлдлийг ялгаж чадахгүй.

Django CSRF хамгаалах механизмууд

Django нь [S2] завсрын програм болон загвар интеграцчлалаар дамжуулан эдгээр эрсдлийг бууруулах хамгаалалтын системээр хангадаг.

Дунд програмыг идэвхжүүлэх

django.middleware.csrf.CsrfViewMiddleware нь CSRF-ийн хамгаалалтыг хариуцдаг бөгөөд ихэвчлэн [S2]-г идэвхжүүлдэг. Энэ нь CSRF халдлагыг аль хэдийн [S2] зохицуулсан гэж үзэх ямар ч харагдах завсрын програм хангамжийн өмнө байрлуулсан байх ёстой.

Загварын хэрэгжилт

Аливаа дотоод POST маягтын хувьд хөгжүүлэгчид {% csrf_token %} тагийг <form> [S2] элемент дотор оруулах ёстой. Энэ нь хүсэлтэд өвөрмөц, нууц токен орсон байх ба сервер нь хэрэглэгчийн сессийн эсрэг баталгаажуулдаг.

Токен алдагдах эрсдэл

Хэрэгжилтийн чухал нарийн ширийн зүйл бол {% csrf_token %}-г [S2] гадаад URL руу чиглэсэн маягтуудад хэзээ ч оруулах ёсгүй. Ингэснээр нууц CSRF токеныг гуравдагч этгээдэд дамжуулж, [S2] хэрэглэгчийн сессийн аюулгүй байдлыг алдагдуулж болзошгүй.

Хөтчийн түвшний хамгаалалт: SameSite Cookies

Орчин үеийн хөтчүүд SameSite атрибутыг Set-Cookie толгой хэсэгт нэвтрүүлсэн бөгөөд [S1]-ийн хамгаалалтын давхаргыг бий болгосон.

  • Хатуу: Күүки нь зөвхөн эхний талын контекстэд илгээгддэг бөгөөд энэ нь URL талбар дахь сайт нь күүкийн [S1] домайнтай таарч байна гэсэн үг.
  • Lax: Күүки нь сайт хоорондын дэд хүсэлт (зураг, жааз гэх мэт) дээр илгээгддэггүй боловч хэрэглэгч [S1] стандарт холбоосыг дагаж эх газрын сайт руу шилжих үед илгээгддэг.

FixVibe үүнийг хэрхэн туршиж үздэг

FixVibe нь одоо CSRF хамгаалалтыг хаалттай идэвхтэй шалгалт болгон багтаасан болно. Домэйн баталгаажуулсны дараа active.csrf-protection нь илрүүлсэн төлөвийг өөрчлөх маягтуудыг шалгаж, CSRF токен хэлбэрийн оролт болон SameSite күүки дохиог шалгаад, дараа нь бага нөлөөлөлтэй хуурамчаар илгээх оролдлого хийж, сервер үүнийг хүлээн авсан тохиолдолд л мэдээлдэг. Күүки шалгалтууд нь мөн CSRF хамгаалалтыг гүнзгийрүүлдэг сул SameSite шинж чанаруудыг тэмдэглэдэг.