requests.get, колбо -хүсэлт, колбоны хүсэлтийн маягт

Колбонд Request.get: Таны алдаж магадгүй энгийн тарилгын вектор

Танд зардал гарах магадлалтай чекийг алдсан тохиолдол: Requests.get болон Flask хүсэлтийн маягт

Үүнийг төсөөлөөд үз дээ: залуу хөгжүүлэгч функцийг илгээх дарамтанд ажиллаж байна. Тэд Flask аппликейшн нээж, шинэ маршрут нэмж, асуулгын параметрийг аваад цааш үргэлжлүүлнэ.

Анх харахад энэ Flask хүсэлтийн хэрэглээ зүгээр харагдаж байна. Гэхдээ орхигдуулна уу төрөл=int мөн та хаалгаа онгойлгож байна тарилгын дайралт. Эдгээр нь "зүгээр л утга авч байгаа" учраас кодын хяналтаас гадуур гардаг эрсдэлүүд юм.

Эрсдэл хаана нуугдаж байна вэ FЛаск хүсэлт болон FЛаск хүсэлтийн маягт

аль аль нь колбо.хүсэлт болон колбо.хүсэлтийн маягт нь итгэлгүй оролтын цэгүүд юм. Тэдний буцаасан утга бүр үйлчлүүлэгчээс шууд ирдэг бөгөөд болзошгүй дайсагнасан гэж үзэх ёстой.

Энэ өгөгдлийг баталгаажуулж эсвэл ариутгаж чадахгүй байх нь дараах чухал аюулгүй байдлын асуудлуудад хүргэж болзошгүй:

Эдгээр эрсдэлүүд нь зөвхөн мэдээллийн сан эсвэл фронтенд рендерингт хамаарахгүй; халдагчид загварт ашигласан эсвэл дэд процессуудад дамжуулсан оролтыг ашиглаж болно.

Аюулгүй псевдо кодын хэв маяг:

Урьдчилан сэргийлэх CI/CD хэрэгжилт:

Синтакс нь аюулгүй харагдаж байсан ч загвар эсвэл системийн командуудад түүхий эсвэл шалгагдаагүй утгуудыг ашиглах нь ноцтой тарилгын вектор болж хувирдаг.

Практик тарилгын урсгал (Аюулгүй симуляци)

Зохиомол, аюулгүй хувилбарыг ашиглан тарилгын согог хэрхэн илэрдэгийг энд харуулав.

  1. Хэрэглэгч програм руу үүсгэсэн асуулгын параметрийг илгээдэг.
  2. Апп нь утгыг ашиглан уншдаг хүсэлт.args.get() баталгаажуулалтгүйгээр.
  3. Энэ утга нь SQL асуулга, загварын мөр эсвэл бүрхүүлийн команд руу шууд холбогддог.
  4. Систем нь оруулсан контентыг анзааралгүйгээр энэ логикийг гүйцэтгэдэг.

Псевдо-код (аюултай биш, зөвхөн жишээ болгон):

Зохиомол бүртгэлийн ул мөр:

Энэ жишээнд орлуулагч ашигласан ч оролтын боловсруулалтад гарсан жижиг алдаа нь ноцтой эмзэг байдалд хэрхэн хүргэж болохыг тусгасан болно.

Автоматжуулсан тестүүд үүнийг алдаж магадгүй, учир нь тэдгээр нь ихэвчлэн алдаатай эсвэл хортой оролтын төрлийг биш харин хүчинтэй оролтын төрлийг шалгадаг.

Хамаарал дахь далд эрсдэлүүд Колбоны хүсэлт болон Колбоны хүсэлтийн маягт

Таны код цэвэр байж болох ч гуравдагч талын багцууд таныг эвдэж болзошгүй.
Зарим Flask залгаасууд эсвэл сангууд нь дотооддоо flask хүсэлт эсвэл flask хүсэлтийн маягтыг баталгаажуулалтгүйгээр дууддаг.

Уран зохиолын багцуудын жишээ:

In CI/CD, автомат хамаарлын шинэчлэлтүүд нь аюултай хүсэлтүүдийг чимээгүйхэн оруулж болно. get дуудлага эсвэл эмзэг оролтын боловсруулалтын хэв маяг.

Хэр аюултай вэ Колбоны хүсэлт Хэрэглээний хуудасны өмнөх кодын тоймууд

Хурдацтай хөгжиж буй орчинд жижиг боловч аюултай алдаанууд, ялангуяа өөрчлөлт нь хор хөнөөлгүй мэт санагдах үед анзаарагдахгүй өнгөрдөг.

Жишээ нь pull request ялгаа:

Шүүмжлэгчийн сэтгэгдэл:
"Зүгээр харагдаж байна, зүгээр л параметр авч байна."

Энэ төрлийн алдаа нь дараах шалтгааны улмаас түгээмэл байдаг.

  • Танин мэдэхүйн гажуудал: хянагчид request.args.get() нь анхдагчаар аюулгүй гэж үзэж магадгүй.
  • Цагийн дарамтХугацаа дуусах үед аюулгүй байдлын шалгалтууд хойш тавигддаг.
  • Дифференциал танил байдал: өөрчлөлт нь бага зэрэг харагдаж байгаа тул гүнзгий хяналт тавиагүй байна.

Тодорхой дүрэм журам эсвэл автомат хэрэгжилтгүйгээр эдгээр нарийн эрсдэлүүд үйлдвэрлэлд анзаарагдахгүй алга болдог.

Үр дүнтэй урьдчилан сэргийлэх

Тарилгын эрсдэлийг бууруулахын тулд оролтын баталгаажуулалт, автомат сканнердах, туршилтын хамрах хүрээг хослуулна уу.

 Кастинг болон цагаан жагсаалттай оролтын баталгаажуулалт:

Дамжуулах нь утгыг аюулгүй төрөлд шилжүүлдэг бол цагаан жагсаалт нь зөвхөн сайн мэдэгдэж буй утгуудыг үргэлжлүүлэхийг баталгаажуулдаг.

Статик програмын аюулгүй байдлын тест (SASTin CI/CD:

Энэ алхам нь хүчингүй болсон эсэхийг илрүүлэхэд тусална хүсэлт.args.get() or хүсэлт.хэлбэр.get() үйлдвэрлэлд хүрэхээс өмнө дуудлага хийдэг.

Ариутгалыг хэрэгжүүлэх нэгжийн туршилтууд:

Эдгээр туршилтууд нь апп нь буруу хэлбэртэй эсвэл хортой оролтыг тогтмол няцаах эсэхийг баталгаажуулдаг.

DevSecOps руу нэгтгэх Pipelines

Завсрын програм хангамжийн хэрэгжилт:

@app.before_request

Код болон гуравдагч талын хамаарлуудыг хоёуланг нь сканнердах аюултай хүсэлтүүдийг илрүүлэхэд тусалдаг. get, колбоны хүсэлт болон колбоны хүсэлтийн маягтыг үйлдвэрлэлд хүрэхээс өмнө ашиглах.

Энэ асуудал колбоноос давж гардаг

Аюултай оролтын боловсруулалт нь зөвхөн Flask-д л тохиолддог зүйл биш бөгөөд энэ нь вэб фреймворкуудад ч байдаг. Аз болоход шийдэл нь тууштай байдаг: оролтыг эрт бөгөөд чанд баталгаажуулах.

Django (аюулгүй псевдо код):

FastAPI (төрлийн зөвлөмжийг ашиглан дизайны хувьд аюулгүй):

Хоёр жишээ хоёулаа оролтын төрөл болон хүрээг хэрэгжүүлдэг бөгөөд ирж буй өгөгдөл нь мэдрэмтгий логикт хүрэхээс өмнө найдвартай эсэхийг баталгаажуулдаг.

Flask, Django, эсвэл FastAPI эсэхээс үл хамааран хүсэлтийн параметр бүр зөв баталгаажуулаагүй бол тарилгын цэг байж болно.

DevSecOps дээр илрүүлэхэд Xygeni ашиглах нь

DevSecOps орчинд гараар хянах нь хангалтгүй юм. Ксигени Аюултай колбоны хүсэлт, колбоны хүсэлтийн маягт болон хүсэлтүүдийг илрүүлэх автоматжуулалт.

Практик DevSecOps програмууд:

  1. Статик сканнерууд: Аливааг тэмдэглэнэ хүсэлт.args.get() ямар ч төрөл=, болон баталгаажуулалт дутуу байгаа колбоны хүсэлтийн маягтын дуудлагууд.
  2. Хамаарлын шинжилгээШууд бус дуудлагын тусламжтайгаар илэрч болох аюултай хэв маягийн талаар номын сангуудыг хянадаг.
  3. Аюултай нэгдлүүдийг хаах: CI/CD Хэрэв шинэ код нь эрсдэлтэй requests.get эсвэл хүчингүй маягтын хандалтыг нэвтрүүлбэл амжилтгүй болно.
  4. Суурь хэрэгжилтАюулгүй дуудлагууд аюултай дуудлага болж буцахаас сэргийлэхийн тулд өөрчлөлтүүдийг хянадаг.

Эдгээр шалгалтыг автоматжуулах нь хүний ​​алдааны эрсдэлийг бууруулдаг хүргэлтийг удаашруулахгүйгээр аюулгүй байдлыг тасралтгүй хадгалдаг.

Тиймээс, баталгаажуулах, ариутгах, автоматжуулах

Хамгийн гол нь: requests.get, flack request болон flack request form бүгд анхдагчаар итгэлгүйХэрэв та арга хэмжээ авахгүй бол тэд хортой өгөгдөл дамжуулахад баяртай байх болно.

Таны гурван дүрэм:

  • хүчин төгөлдөр кастинг болон цагаан жагсаалтыг ашиглан оруулсан оролтууд.
  • ариутгаж өгөгдөл нь мэдрэмтгий үйлдлүүдэд хүрэхээс өмнө.
  • автомат хэрэглэх таны чекүүд pipeline байршуулахаас өмнө аюултай кодыг зогсоох.

Аюултай колбоны хүсэлтийн нэг зохицуулагч, шалгагдаагүй колбоны хүсэлтийн маягтын талбар эсвэл хамгаалалтгүй requests.get дуудлага нь таны програмыг эрсдэлд оруулж болзошгүй. Параметр бүрийг болзошгүй дайсагнасан гэж үзээд DevSecOps-оо ажиллуулж болно. pipeline дүрмийг цаг тухай бүрт нь хэрэгжүүл.

sca-tools-програм хангамжийн-бүтцийн-шинжилгээний-хэрэгсэл
Програм хангамжийн эрсдэлээ эрэмбэлэх, засах, аюулгүй болгох
Үнэгүй бүртгэлээ аваарай.
Зээлийн картын шаардлагагүй.

Програм хангамжийн хөгжүүлэлт болон хүргэлтээ аюулгүй байлгаарай

Xygeni Product Suite-тэй хамт