Бүтэн төгсгөл нь энгийн 4 үсэг юм. Өмнө нь хэн ч танд хэлж байгаагүй сексийн тухай хөгжилтэй баримтууд. PHP-д төрөл хөрвүүлэхээс зайлсхий

Сайн уу. Намайг Саша Баранник гэдэг. Mail.Ru группт би 15 ажилтантай вэб хөгжүүлэлтийн хэлтсийг удирддаг. Бид хэдэн арван сая хэрэглэгчдэд зориулсан вэбсайтыг хэрхэн бүтээх талаар сурсан бөгөөд өдөр бүр хэдэн сая үзэгчдийг хялбархан даван туулж чадна. Би өөрөө 20-иод жил вэб хөгжүүлэлт хийж байгаа бөгөөд сүүлийн 15 жил би үндсэндээ PHP хэл дээр программчлал хийж байна. Хэлний чадвар, хөгжлийн арга барил нь энэ хугацаанд ихээхэн өөрчлөгдсөн ч гол сул талуудыг ойлгох, тэдгээрээс хамгаалах чадвар нь аливаа хөгжүүлэгчийн хувьд гол ур чадвар хэвээр байна.

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

P.S. Энэ ном урт тул орчуулгыг хэд хэдэн нийтлэлээр хэвлэнэ. Ингээд эхэлцгээе...

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

Хэрэв бид X компанийн онлайнаар эхлүүлсэн хийсвэр вэб програмыг авч үзвэл энэ нь хакердсан тохиолдолд ихээхэн хор хөнөөл учруулж болзошгүй хэд хэдэн бүрэлдэхүүн хэсгүүдийг агуулдаг гэж бид үзэж болно. Жишээ нь аль нь вэ?

  • Хэрэглэгчдэд учруулах хор хөнөөл: имэйл, нууц үг, хувийн мэдээлэл, банкны картын мэдээлэл, бизнесийн нууц, холбоо барих жагсаалт, гүйлгээний түүх болон гүн хамгаалагдсан нууцад (нохойгоо Sparkle гэж нэрлэсэн хүн гэх мэт) нэвтрэх. Энэ мэдээллийг задруулах нь хэрэглэгчдэд (хувь хүн, компани) хохирол учруулдаг. Ийм өгөгдлийг буруугаар ашигладаг вэб програмууд болон хэрэглэгчийн итгэлийг ашигласан хостууд бас хор хөнөөл учруулж болзошгүй.
  • X компанид учирсан хохирол: хэрэглэгчдэд учирсан хохирлын улмаас нэр хүнд муудаж, нөхөн төлбөр төлөх шаардлагатай болж, бизнесийн чухал мэдээлэл алдагдаж, нэмэлт зардал гарч ирдэг - дэд бүтэц, аюулгүй байдлыг сайжруулах, үр дагаврыг арилгах, хууль эрх зүйн зардал, их хэмжээний ашиг тус. халагдсан топ менежерүүд гэх мэт.
  • Эдгээр нь вэб програмын аюулгүй байдлын урьдчилан сэргийлэх ёстой ихэнх асуудлуудыг багтаасан тул би эдгээр хоёр ангилалд анхаарлаа хандуулах болно. Аюулгүй байдлын ноцтой зөрчилтэй тулгарсан бүх компаниуд хэвлэлийн мэдээ болон вэбсайтдаа үүнд хэр мэдрэмтгий байгаагаа хурдан бичдэг. Тиймээс практик дээр тулгарахаасаа өмнө энэ асуудлын ач холбогдлыг бүх зүрх сэтгэлээрээ мэдрэхийг танд зөвлөж байна.

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

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

    Вэб програмын аюулгүй байдал нь уг программын үйлчилгээнд итгэдэг хэрэглэгчдийг хамгаалах ёстой тул дараах асуултын хариултыг мэдэх шаардлагатай.

  • Хэн бидэн рүү дайрахыг хүсч байна вэ?
  • Тэд яаж бидэн рүү дайрч чадах вэ?
  • Бид тэднийг хэрхэн зогсоох вэ?
  • Хэн бидэн рүү дайрахыг хүсч байна вэ? Эхний асуултын хариулт нь маш энгийн: бүх зүйл, бүх зүйл. Тийм ээ, бүх орчлон ертөнц танд сургамж өгөхийг хүсч байна. Кали Линукс ажиллуулдаг overclocked компьютертэй залуу? Тэр аль хэдийн чам руу дайрсан байх. Хүний дугуйнд хигээс хийх дуртай сэжигтэй нөхөр? Тэр аль хэдийн чам руу дайрах хүн хөлсөлсөн байх. Таныг цаг тутамд мэдээллээр хангадаг найдвартай REST API? Энэ нь магадгүй сарын өмнө танд халдвартай мэдээлэл өгөхийн тулд хакердсан байх. Би ч гэсэн чам руу дайрч чадна! Тиймээс та энэ номонд сохроор итгэх шаардлагагүй. Намайг худлаа гэж бодоорой. Мөн намайг ил гаргаж, миний хор хөнөөлтэй зөвлөгөөг илчлэх програмистыг олоорой. Нөгөөтэйгүүр тэр чамайг хакердах гэж байгаа байх...

    Энэхүү гаж донтолтын утга нь таны вэб програмтай харьцаж буй бүх зүйлийг оюун ухаанаараа ангилахад хялбар болгох явдал юм ("Хэрэглэгч", "Хакер", "Мэдээллийн сан", "Итгэлгүй оролт", "Менежер", "REST API" болон). дараа нь ангилал бүрт итгэлцлийн индексийг онооно. Мэдээжийн хэрэг, "Хакер" -д итгэж болохгүй, гэхдээ "Мэдээллийн сан" -ын талаар юу хэлэх вэ? "Итгэмжгүй оролт" нь ямар нэг шалтгааны улмаас ийм нэртэй болсон, гэхдээ та хамт ажиллагсдынхаа итгэмжлэгдсэн Atom хангамжаас блог нийтлэлийг шүүх үү?

    Вэб программыг хакердахдаа нухацтай ханддаг хүмүүс энэ сэтгэлгээний давуу талыг ашиглаж сурдаг бөгөөд ихэнхдээ хамгаалалт сайтай байх магадлал багатай эмзэг мэдээллийн эх сурвалжаас илүү найдвартай мэдээллийн эх сурвалж руу халддаг. Энэ нь санамсаргүй шийдвэр биш юм: бодит амьдрал дээр илүү өндөр итгэлцлийн индекстэй субъектууд сэжигтэй байдаггүй. Програмд ​​дүн шинжилгээ хийхдээ би эдгээр мэдээллийн эх сурвалжуудыг хамгийн түрүүнд анхаарч үздэг.

    "Мэдээллийн сан" руу буцъя. Хакер өгөгдлийн санд нэвтэрч чадна гэж үзвэл (бид паранойдууд үүнийг үргэлж таамагладаг) хэзээ ч итгэж болохгүй. Ихэнх програмууд мэдээллийн санд ямар ч асуултгүйгээр итгэдэг. Вэб программ нь гаднаасаа нэг бүхэл мэт харагдах боловч дотроо мэдээлэл солилцдог бие даасан бүрэлдэхүүн хэсгүүдийн систем юм. Хэрэв бид эдгээр бүх бүрэлдэхүүн хэсгүүдийг найдвартай гэж үзвэл тэдгээрийн аль нэгийг нь хакердсан бол бусад нь хурдан эвдрэх болно. Аюулгүй байдлын ийм гамшгийн асуудлыг "Хэрэв мэдээллийн сан хакердвал бид алдсаар л байна" гэсэн хэллэгээр шийдэж чадахгүй. Та ингэж хэлж болно, гэхдээ хэрэв та суурьдаа итгэж, үүний дагуу ажиллахгүй бол үүнийг хийх хэрэгтэй болно гэдэг нь үнэн биш юм!

    Тэд яаж бидэн рүү дайрч чадах вэ? Хоёр дахь асуултын хариулт нь нэлээд өргөн жагсаалт юм. Вэб програмын бүрэлдэхүүн хэсэг эсвэл давхарга бүр өгөгдөл хүлээн авдаг газраас та халдлагад өртөж болно. Үндсэндээ вэб программууд зүгээр л өгөгдлийг боловсруулж, нэг газраас нөгөө рүү зөөдөг. Хэрэглэгчийн хүсэлт, мэдээллийн сан, API, блог хангамж, маягт, күүки, хадгалах газар, PHP орчны хувьсагчид, тохиргооны файлууд, бусад тохиргооны файлууд, тэр ч байтугай таны ажиллуулж буй PHP файлууд - эдгээр нь бүгд нууцлалыг зөрчиж, хохирол учруулах өгөгдөлд халдварлаж болзошгүй. Үндсэндээ, хэрэв хүсэлт гаргахад ашигласан PHP кодонд хортой өгөгдөл илт байхгүй бол энэ нь "ачаалал" хэлбэрээр ирэх болно. Энэ нь a) та PHP-ийн эх кодыг бичсэн, б) энэ нь зохих ёсоор хянагдсан, в) гэмт хэргийн байгууллагуудаас төлбөр аваагүй гэж үздэг.

    Хэрэв та өгөгдөл бүрэн аюулгүй, ашиглахад тохиромжтой эсэхийг шалгахгүйгээр өгөгдлийн эх сурвалжийг ашиглавал халдлагад өртөх магадлалтай. Мөн хүлээн авсан өгөгдөл нь илгээж буй өгөгдөлтэй таарч байгаа эсэхийг шалгах хэрэгтэй. Хэрэв өгөгдөл гаралтад бүрэн аюулгүй болоогүй бол та бас ноцтой асуудалтай тулгарах болно. Энэ бүхнийг PHP-д зориулсан дүрэм болгон илэрхийлж болно “Оролтыг баталгаажуулах; гаралтаас зугтах."

    Эдгээр нь бид ямар нэгэн байдлаар хянах ёстой мэдээллийн тодорхой эх сурвалж юм. Эх сурвалжууд нь үйлчлүүлэгчийн хадгалах санг агуулж болно. Жишээлбэл, ихэнх программууд хэрэглэгчдэд күүки дотор хадгалагдах өвөрмөц сессийн ID-г оноож таньдаг. Хэрэв халдагчид күүкигээс утгыг олж авбал өөр хэрэглэгчийн дүрийг үзүүлж болно. Хэдийгээр бид хэрэглэгчийн мэдээллийг саатуулах, өөрчлөхтэй холбоотой зарим эрсдлийг бууруулж чадах ч хэрэглэгчийн компьютерийн физик аюулгүй байдлыг баталгаажуулж чадахгүй. Хэрэглэгчид "123456"-г "нууц үг"-ийн дараа хамгийн тэнэг нууц үг гэж үзэх болно гэдгийг ч бид баталж чадахгүй. Өнөө үед жигнэмэг нь хэрэглэгчийн талд байгаа цорын ганц хадгалалтын төрөл биш байгаа нь нэмэлт хурц тод байдлыг харуулж байна.

    Ихэнхдээ үл тоомсорлодог өөр нэг эрсдэл бол таны эх кодын бүрэн бүтэн байдал юм. РНР-д олон тооны сул холбогдсон номын сан, модуль, фреймворкийн багц дээр суурилсан програм хөгжүүлэлт улам бүр түгээмэл болж байна. Тэдгээрийн ихэнхийг Github гэх мэт нийтийн мэдээллийн сангаас татаж аваад Composer болон түүний вэб дагалдагч Packagist.org зэрэг багц суулгагчийг ашиглан суулгадаг. Тиймээс эх кодын аюулгүй байдал нь эдгээр бүх гуравдагч талын үйлчилгээ, бүрэлдэхүүн хэсгүүдийн аюулгүй байдлаас бүрэн хамаардаг. Хэрэв Github-д халдсан бол энэ нь хортой нэмэлт бүхий кодыг түгээхэд ашиглагдах магадлалтай. Хэрэв Packagist.org - бол халдагчид багцын хүсэлтийг өөрийн хортой багц руу чиглүүлэх боломжтой болно.

    Одоогоор Composer болон Packagist.org нь хараат байдлыг илрүүлэх болон багцын хуваарилалтад мэдэгдэж буй сул талуудтай тул өөрийн үйлдвэрлэлийн орчинд байгаа бүх зүйлийг дахин шалгаж, Packagist.org-аас бүх багцын эх сурвалжийг шалгаарай.

    Бид тэднийг хэрхэн зогсоох вэ? Вэб програмын аюулгүй байдлыг зөрчих нь инээдтэй энгийнээс эхлээд маш их цаг хугацаа шаардсан ажил байж болно. Вэб аппликейшн болгонд хаа нэгтээ сул тал байдаг гэж үзэх нь зөв юм. Шалтгаан нь энгийн: бүх програмыг хүмүүс хийдэг бөгөөд хүмүүс алдаа гаргадаг. Тиймээс төгс аюулгүй байдал нь хоосон мөрөөдөл юм. Бүх програмууд нь сул талуудтай байж болох бөгөөд эрсдэлийг багасгах нь програмистуудын үүрэг юм.

    Вэб програмын халдлагын улмаас хохирох магадлалыг бууруулахын тулд сайтар бодох хэрэгтэй болно. Үйл явдал өрнөх тусам би халдлагын боломжит аргуудын талаар ярих болно. Тэдний зарим нь тодорхой, зарим нь тийм биш юм. Гэхдээ ямар ч тохиолдолд асуудлыг шийдэхийн тулд аюулгүй байдлын зарим үндсэн зарчмуудыг анхаарч үзэх хэрэгтэй.

    Аюулгүй байдлын үндсэн зарчмууд Аюулгүй байдлын арга хэмжээг боловсруулахдаа тэдгээрийн үр нөлөөг дараах хүчин зүйлсийг ашиглан үнэлж болно. Би дээр заримыг нь аль хэдийн иш татсан.
  • Хэнд ч, юунд ч бүү итгэ.
  • Үргэлж хамгийн муу тохиолдлын хувилбарыг төсөөл.
  • Олон түвшний хамгаалалт (Defence-in-Depth) хэрэглэнэ.
  • "Энгийн тэнэг байлгах" (KISS) зарчмыг баримтал.
  • "Хамгийн бага давуу эрх" гэсэн зарчмыг баримтал.
  • Халдагчид тодорхой бус байдлыг мэдэрдэг.
  • Баримт бичгийг (RTFM) уншаарай, гэхдээ үүнд хэзээ ч бүү итгэ.
  • Туршилтанд ороогүй бол ажиллахгүй.
  • Энэ нь үргэлж чиний буруу!
  • Бүх цэгүүдийг товчхон авч үзье.1. Хэнд ч, юунд ч бүү итгэ Дээр дурдсанчлан таны вэб программыг харилцаж байгаа бүх зүйл болон хүн бүр үүнийг хакердахыг хүсдэг гэж үзэх нь зөв байр суурь юм. Үүнд хүсэлтийг боловсруулахад шаардлагатай бусад хэрэглээний бүрэлдэхүүн хэсэг эсвэл давхаргууд орно. Юу ч, бүх зүйл. Үл хамаарах зүйл байхгүй.2. Үргэлж хамгийн муу тохиолдлын хувилбарыг төсөөлөөрэй Олон хамгаалалтын системд нэг нийтлэг зүйл байдаг: тэдгээр нь хичнээн сайн хийгдсэнээс үл хамааран тус бүрийг зөрчиж болно. Хэрэв та үүнийг анхаарч үзвэл хоёр дахь цэгийн давуу талыг хурдан ойлгох болно. Хамгийн муу хувилбарт анхаарлаа төвлөрүүлэх нь халдлагын цар хүрээ, ноцтой байдлыг үнэлэхэд тусална. Хэрэв ийм зүйл тохиолдвол та аюулгүй байдлын нэмэлт арга хэмжээ, архитектурын өөрчлөлтийг хийснээр тааламжгүй үр дагаврыг бууруулах боломжтой. Магадгүй таны хэрэглэж буй уламжлалт шийдлийг аль хэдийн илүү сайн зүйлээр сольсон байх?3. Олон түвшний хамгаалалтыг ашиглах (Defense-in-Depth) Олон түвшний хамгаалалтыг цэргийн шинжлэх ухаанаас зээлж авсан байдаг, учир нь хүмүүс дайсны сум, ирээс амин чухал эрхтнийг бүрхсэн олон тооны хана, элсний уут, тоног төхөөрөмж, хуяг, колбо зэрэг нь зөв гэдгийг ойлгосон. аюулгүй байдалд хандах хандлага. Дээр дурдсан зүйлсийн аль нь хамгаалахгүйг та хэзээ ч мэдэхгүй бөгөөд хэд хэдэн хамгаалалтын давхарга нь зөвхөн хээрийн бэхлэлт эсвэл байлдааны бүрэлдэхүүнд найдах боломжийг танд олгох хэрэгтэй. Мэдээжийн хэрэг, энэ нь зөвхөн нэг бүтэлгүйтлийн тухай биш юм. Халдлага үйлдэгч дундад зууны үеийн аварга том хананд шатаар авирч, цаана нь өөр хана байгааг олж харав гэж төсөөлөөд үз дээ. Хакерууд ч мөн адил мэдрэх болно.4. Keep It Simple тэнэг (ҮНСЭХ) Хамгийн сайн хамгаалалт үргэлж энгийн байдаг. Тэдгээрийг боловсруулах, хэрэгжүүлэх, ойлгох, ашиглах, туршихад хялбар байдаг. Энгийн байдал нь алдааг багасгаж, програмын зөв гүйцэтгэлийг дэмжиж, хамгийн төвөгтэй, дайсагнасан орчинд ч хэрэгжилтийг хөнгөвчилдөг.5. "Хамгийн бага давуу эрх"-ийн зарчмыг баримтална. Мэдээлэл солилцоход оролцогч бүр (хэрэглэгч, үйл явц, программ) зөвхөн өөрийн чиг үүргээ хэрэгжүүлэхэд шаардлагатай хандах эрхтэй байх ёстой.6. Attackers Smell Obscurity by Obscurity нь хэрэв та Defense A-г ашиглаад энэ нь юу болох, хэрхэн ажилладаг, байгаа эсэхийг хэнд ч хэлэхгүй бол халдагчид эргэлзсэн тул танд ид шидээр туслах болно гэсэн таамаглал дээр суурилдаг. Бодит байдал дээр энэ нь зөвхөн бага зэргийн давуу талыг өгдөг. Ихэнхдээ туршлагатай халдлага үйлдэгч таны авсан арга хэмжээг ойлгох боломжтой тул та тодорхой хамгаалалт ашиглах хэрэгтэй. Тодорхой бус хамгаалалт нь жинхэнэ хамгаалах хэрэгцээг үгүй ​​болгодог гэдэгт хэт итгэлтэй байгаа хүмүүсийг хуурмаг зүйлээс ангижруулахын тулд тусгайлан шийтгэх хэрэгтэй.7. Баримт бичгийг (RTFM) уншаарай, гэхдээ PHP гарын авлага нь Библи юм. Мэдээжийн хэрэг, үүнийг Нисдэг спагетти мангас бичээгүй тул техникийн хувьд энэ нь хараахан анзаарагдаагүй, засч залруулж амжаагүй хагас үнэн, орхигдсон, буруу тайлбар эсвэл алдааг агуулж болно. Stack Overflow-д мөн адил хамаарна.

    Аюулгүй байдлын мэргэн ухааны тусгай эх сурвалжууд (PHP-д төвлөрсөн ба бусад) ерөнхийдөө илүү нарийвчилсан мэдлэгийг өгдөг. РНР аюулгүй байдлын талаархи Библитэй хамгийн ойр байдаг зүйл бол нийтлэл, заавар, зөвлөмжийг санал болгодог OWASP юм. Хэрэв OWASP дээр ямар нэг зүйл хийхийг зөвлөдөггүй бол хэзээ ч бүү хий!

    8. Туршилтанд ороогүй бол ажиллахгүй байна. Аюулгүй байдлын арга хэмжээг хэрэгжүүлэхдээ баталгаажуулахад шаардлагатай бүх ажлын тестийг бичих ёстой. Тэр дундаа шоронгийн уйлж буй хакер мэт дүр эсгэх. Энэ нь хол санагдуулах мэт санагдаж болох ч вэб програмыг хакердах арга техниктэй танилцах нь сайн туршлага юм; Та боломжит эмзэг байдлын талаар мэдэж авах бөгөөд таны паранойд нэмэгдэх болно. Үүний зэрэгцээ вэб програмыг хакердсанд шинээр олж авсан талархлын талаар удирдлагадаа хэлэх шаардлагагүй. Эмзэг байдлыг тодорхойлохын тулд автоматжуулсан хэрэгслийг ашиглахаа мартуузай. Эдгээр нь ашигтай, гэхдээ мэдээжийн хэрэг тэд өндөр чанартай кодын тойм, тэр ч байтугай програмыг гараар туршиж үзэхийг орлохгүй. Туршилтанд хэдий чинээ их хөрөнгө зарцуулна, төдий чинээ таны програм илүү найдвартай байх болно.9. Энэ нь үргэлж чиний буруу! Программистууд аюулгүй байдлын сул талуудыг тусгаарлагдсан халдлагад илрүүлнэ гэж бодож дассан бөгөөд тэдгээрийн үр дагавар нь үл тоомсорлодог.

    Жишээлбэл, мэдээллийн зөрчлийг (сайн баримтжуулсан, өргөн тархсан хакерын төрөл) нь хэрэглэгчдэд шууд нөлөөлдөггүй тул аюулгүй байдлын бага зэргийн асуудал гэж үздэг. Гэсэн хэдий ч програм хангамжийн хувилбарууд, хөгжүүлэлтийн хэлүүд, эх кодын байршил, хэрэглээний болон бизнесийн логик, өгөгдлийн сангийн бүтэц, вэб програмын орчин, дотоод үйл ажиллагааны бусад талуудын талаарх мэдээллийг задруулах нь амжилттай халдлага хийхэд маш чухал байдаг.

    Үүний зэрэгцээ, аюулгүй байдлын системд хийсэн халдлага нь ихэвчлэн халдлагын хослол байдаг. Хувь хүний ​​хувьд тэд ач холбогдолгүй, гэхдээ заримдаа тэд бусад халдлагын замыг нээж өгдөг. Жишээлбэл, SQL тарилга нь заримдаа тодорхой хэрэглэгчийн нэрийг шаарддаг бөгөөд үүнийг илүү үнэтэй бөгөөд харагдахуйц бүдүүлэг хүчний оронд захиргааны интерфейсийн эсрэг Хугацааны довтолгоо ашиглан олж авах боломжтой. Хариуд нь SQL injection нь бүртгэлд олон тооны сэжигтэй оруулгуудын анхаарлыг татахгүйгээр тодорхой захиргааны дансанд XSS халдлага хийх боломжийг олгодог.

    Эмзэг байдлыг тусад нь авч үзэх нь аюул заналхийллийг дутуу үнэлэх, тиймээс тэдэнд хэт хайхрамжгүй хандах явдал юм. Программистууд эмзэг байдлыг хэтэрхий өчүүхэн гэж үздэг тул засахдаа залхуу байдаг. Аюулгүй хөгжүүлэлтийн хариуцлагыг эцсийн программист эсвэл хэрэглэгчдэд шилжүүлэх нь нийтлэг практик бөгөөд ихэнхдээ тодорхой асуудлуудыг баримтжуулалгүйгээр: тэр ч байтугай эдгээр эмзэг байдал байгааг ч хүлээн зөвшөөрдөггүй.

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

    Оролтын баталгаажуулалт Оролтын баталгаажуулалт нь таны вэб програмын гаднах хамгаалалтын периметр юм. Энэ нь бизнесийн үндсэн логик, өгөгдөл боловсруулах, гаралт үүсгэхийг хамгаалдаг. Шууд утгаараа энэ периметрийн гадна байгаа бүх зүйл, одоогийн хүсэлтээр гүйцэтгэсэн кодоос бусад нь дайсны нутаг дэвсгэр гэж тооцогддог. Периметрийн бүх боломжит орц, гарцыг байлдааны харуулууд өдөр шөнөгүй хамгаалж, эхлээд буудаж, дараа нь асуулт асуудаг. Тусдаа хамгаалалттай (мөн маш сэжигтэй харагддаг) "холбоотон" нь "Загвар", "Мэдээллийн сан", "Файлын систем" зэрэг периметрт холбогдсон байдаг. Хэн ч тэдэн рүү буудахыг хүсдэггүй, гэхдээ тэд азаа үзэх юм бол... bang. Холбоотон бүр өөрийн гэсэн периметртэй байдаг бөгөөд энэ нь манайд итгэхгүй байж болно.

    Та хэнд итгэж болох талаар миний хэлснийг санаж байна уу? Хэнд ч, юу ч биш. PHP ертөнцөд "хэрэглэгчийн оруулсан мэдээлэлд" итгэхгүй байх зөвлөгөө хаа сайгүй байдаг. Энэ бол итгэлцлийн зэрэглэлээр ангиллын нэг юм. Хэрэглэгчдэд итгэх боломжгүй гэж үзвэл бусад бүх зүйлд итгэж болно гэж бид үзэж байна. Энэ бол буруу. Хэрэглэгчид бол бид тэднийг мэдэхгүй, удирдаж чадахгүй учраас хамгийн тодорхой найдваргүй оролтын эх үүсвэр юм.

    Баталгаажуулах шалгуур Оруулсан өгөгдлийн баталгаажуулалт нь вэб програмын хамгийн ойлгомжтой бөгөөд хамгийн найдваргүй хамгаалалт юм. Эмзэг байдлын дийлэнх нь баталгаажуулалтын системийн алдаанаас болж үүсдэг тул хамгаалалтын энэ хэсэг зөв ажиллах нь маш чухал юм. Энэ нь бүтэлгүйтсэн байж болох ч дараах зөвлөмжийг дагаж мөрдөөрэй. Захиалгат баталгаажуулагчийг хэрэгжүүлэх болон гуравдагч талын баталгаажуулалтын сангуудыг ашиглахдаа гуравдагч талын шийдлүүд нь ерөнхий даалгавруудыг гүйцэтгэх хандлагатай байдаг бөгөөд таны програмд ​​шаардлагатай байж болох гол баталгаажуулалтын процедурыг орхигдуулдаг гэдгийг үргэлж санаарай. Аюулгүй байдлын хэрэгцээнд зориулагдсан аливаа номын санг ашиглахдаа тэдгээрийн сул тал, зөв ​​ажиллагааг бие даан шалгахаа мартуузай. Мөн PHP нь хачирхалтай, аюултай үйлдэл үзүүлж чадна гэдгийг санахыг зөвлөж байна. Шүүлтүүрийн функцээс авсан энэ жишээг харна уу:

    Filter_var("php://example.org", FILTER_VALIDATE_URL);
    Шүүлтүүр ямар ч асуултгүйгээр дамждаг. Асуудал нь хүлээн авсан php:// URL-ыг гүйцэтгэгч PHP скриптээс (PHP зохицуулагчаар дамжуулан) өгөгдөл буцаахаас илүү алсын HTTP хаягийг хүлээн авахыг хүлээдэг PHP функц руу дамжуулж болох юм. Шүүлтүүрийн сонголт нь хүчинтэй URI-г хязгаарлах арга байхгүй тул эмзэг байдал үүсдэг. Хэдийгээр програм нь PHP-д зориулсан URI биш харин http, https эсвэл mailto холбоосыг хүлээж байгаа ч гэсэн. Туршилтын энэхүү хэт ерөнхий хандлагаас ямар ч үнээр зайлсхийх хэрэгтэй.

    Контекстэд болгоомжтой хандаарай. Оролтын баталгаажуулалт нь аюултай өгөгдлийг вэб програмд ​​оруулахаас сэргийлнэ. Гол саад тотгор: Өгөгдлийн аюулгүй байдлын туршилтыг ихэвчлэн эхний зориулалтаар ашиглахад л хийдэг.

    Би нэр агуулсан өгөгдөл хүлээн авлаа гэж бодъё. Би үүнийг таслах тэмдэг, зураас, хаалт, зай болон бүхэл бүтэн Юникод үсэг, тоон тэмдэгтүүдийг маш амархан шалгаж чадна. Нэр нь харуулахад ашиглаж болох хүчинтэй өгөгдөл юм (анхны зорилго). Гэхдээ хэрэв та үүнийг өөр газар ашиглавал (жишээлбэл, мэдээллийн сангийн асуулгад) энэ нь шинэ контекстэд орох болно. Нэрийн хууль ёсны зарим тэмдэгтүүд нь энэ нөхцөлд аюултай болж хувирна: хэрэв нэрийг SQL тарилга хийх мөр болгон хувиргавал.

    Оруулсан өгөгдлийг баталгаажуулах нь угаасаа найдваргүй болох нь харагдаж байна. Энэ нь илт хүчингүй утгыг таслахад хамгийн үр дүнтэй байдаг. Ямар нэг зүйл бүхэл тоо, үсэг, тоон тэмдэгт, HTTP URL байх шаардлагатай үед хэлье. Ийм формат, үнэ цэнэ нь хязгаарлалттай байдаг бөгөөд хэрэв зохих ёсоор баталгаажуулсан бол аюул учруулах магадлал бага байдаг. Бусад утгуудыг (хязгааргүй текст, GET/POST массив, HTML) шалгахад илүү төвөгтэй бөгөөд хортой өгөгдөл агуулсан байх магадлалтай.

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

    Оруулсан өгөгдлийг шалгахын зэрэгцээ хамгаалах аргыг ихэвчлэн ашигладаг. Үүний тусламжтайгаар шинэ контекст бүрийг оруулахдаа өгөгдлийг аюулгүй байдлын үүднээс шалгадаг. Энэ аргыг ихэвчлэн сайт хоорондын скриптээс (XSS) хамгаалахад ашигладаг боловч бусад олон ажлуудад шүүлтүүрийн хэрэгсэл болгон ашигладаг.

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

    Энэ нь анхны оролтын баталгаажуулалтыг давхардуулж байна гэж ойлгож болох ч, нэмэлт баталгаажуулалтын алхамууд нь өгөгдлийн шаардлага маш өөр байх үед одоогийн нөхцөл байдлын онцлогийг илүү сайн зохицуулдаг. Жишээлбэл, маягтаас ирсэн өгөгдөл нь хувийн тоог агуулж болно. Бид үүнийг анх удаа ашиглахдаа утга нь бүхэл тоо эсэхийг шалгадаг. Гэхдээ манай хэрэглээний загварт шилжих үед шинэ шаардлага гарч ирж магадгүй: утга нь програмын бизнесийн логик ажиллахад шаардлагатай тодорхой хязгаарт багтах ёстой. Хэрэв энэ нэмэлт шалгалтыг шинэ нөхцөлд хийхгүй бол ноцтой асуудал үүсч болзошгүй юм.

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

    Сайн жишээ бол загвар дахь гарцгүй гаралтын хувьд HTML-г аюулгүй болгох зорилготой аливаа баталгаажуулалтын процедур юм. Хэрэв бид хар жагсаалт ашигладаг бол HTML нь аюултай элемент, шинж чанар, хэв маяг, гүйцэтгэх боломжтой JavaScript агуулаагүй эсэхийг шалгах хэрэгтэй. Энэ бол маш их ажил бөгөөд хар жагсаалтад суурилсан HTML ариутгагчид аюултай кодын хослолыг үргэлж орхигдуулдаг. Зөвшөөрөгдсөн жагсаалтын хэрэгслүүд нь зөвхөн мэдэгдэж буй зөвшөөрөгдсөн элементүүд болон шинж чанаруудыг зөвшөөрснөөр энэ тодорхой бус байдлыг арилгадаг. Бусад нь юу байгаагаас үл хамааран зүгээр л тусгаарлагдах, тусгаарлах эсвэл хасах болно.

    Тиймээс аюулгүй байдал, найдвартай байдал өндөр учраас аливаа баталгаажуулалтын процедурт цагаан жагсаалтыг илүүд үздэг.

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

    Энэ нь ихэвчлэн бага зэрэг хор хөнөөлтэй байдаг. Уламжлалт шүүлтүүрт жишээлбэл, утасны дугаараас тооноос бусад бүх тэмдэгтийг арилгах (нэмэлт хаалт, зураас гэх мэт) эсвэл шаардлагагүй хэвтээ эсвэл босоо зайг багасгах зэрэг орно. Ийм нөхцөлд дэлгэц эсвэл дамжуулалтын алдааг арилгахын тулд хамгийн бага цэвэрлэгээ хийдэг. Гэсэн хэдий ч, та хортой өгөгдлийг хаахын тулд шүүлтүүрийг ашиглахад хэт автаж болно.

    Оруулсан өгөгдлийг засах оролдлогын нэг үр дагавар нь халдагчид таны залруулгын нөлөөллийг урьдчилан таамаглах явдал юм. Зарим хүчингүй мөрийн утга байна гэж бодъё. Та үүнийг хайж, устгаад шүүж дуусга. Халдагчид таны шүүлтүүрийг даван туулахын тулд стрингээр тусгаарлагдсан утгыг үүсгэвэл яах вэ?

    анхааруулга(баримт бичиг.күүки);
    Энэ жишээн дээр зүгээр л хаягаар шүүх нь юу ч хийхгүй: тодорхой хаягийг арилгах нь өгөгдлийг HTML скриптийн бүрэн хүчинтэй элемент гэж үзэхэд хүргэнэ. Ямар ч тодорхой форматаар шүүх талаар ижил зүйлийг хэлж болно. Энэ бүхэн яагаад оролтын өгөгдлийг шалгах нь програмын аюулгүй байдлын сүүлчийн давталт байж болохгүйг тодорхой харуулж байна.

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

    Гадны баталгаажуулалтын хэрэгсэлд хэзээ ч бүү итгэ, эмзэг байдлыг байнга хянаж, өгөгдлийг шинэ контекст руу шилжүүлэх бүрд баталгаажуулах шаардлагатай гэдгийг би өмнө нь тэмдэглэсэн. Энэ нь вэб програмаас гадуур хийгдсэн баталгаажуулалтад мөн хамаарна. Эдгээрт хөтөч дээрх HTML маягтуудад хамаарах баталгаажуулалт эсвэл бусад хязгаарлалтууд орно. HTML 5-аас энэ маягтыг харна уу (шошго орхигдуулсан):

    Төлөөлөгч Ирландын Нэгдсэн Вант Улс
    HTML маягтууд нь оруулсан өгөгдөлд хязгаарлалт тавьж болно. Тогтсон зүйлсийн жагсаалтыг ашиглан сонголтыг хязгаарлаж, хамгийн бага ба хамгийн их утгыг тохируулахаас гадна текстийн уртыг хязгаарлаж болно. HTML 5-ын боломжууд бүр ч өргөн. Хөтөчүүд нь URL болон имэйл хаягийг шалгаж, огноо, тоо, мужийг хянах боломжтой (хэдийгээр сүүлийн хоёрын дэмжлэг маш бага байдаг). Хөтөчүүд мөн загвар шинж чанарт багтсан JavaScript тогтмол илэрхийлэлүүдийг ашиглан оролтыг баталгаажуулах боломжтой.

    Эдгээр бүх хяналтууд байгаа тул тэдгээрийн зорилго нь таны програмыг ашиглах чадварыг сайжруулах явдал гэдгийг санах нь чухал юм. Ямар ч халдагч таны анхны маягтын хязгаарлалтыг агуулаагүй маягт үүсгэх боломжтой. Та маягтыг автоматаар бөглөх HTTP клиент үүсгэж болно!

    Гадны баталгаажуулалтын хэрэгслийн өөр нэг жишээ бол Twitter гэх мэт гуравдагч талын API-аас өгөгдөл хүлээн авах явдал юм. Энэхүү нийгмийн сүлжээ нь сайн нэр хүндтэй бөгөөд ихэвчлэн эргэлзээгүйгээр итгэдэг. Гэхдээ бид гаж донтон учраас Твиттерт итгэх хэрэггүй. Хэрэв нууцлал алдагдвал түүний хариултууд нь бид бэлтгэхгүй байх аюулгүй мэдээлэл агуулсан байх болно. Тиймээс, энд ч гэсэн ямар нэг зүйл тохиолдвол хамгаалалтгүй байхын тулд өөрийн чекийг ашиглаарай.

    Бид гадны баталгаажуулалтын хэрэгсэлд итгэлтэй байгаа тохиолдолд эмзэг байдлыг хянах нь тохиромжтой. Жишээлбэл, HTML маягт нь хамгийн их уртын хязгаарыг тогтоосон бөгөөд бид хэмжээ нь хязгаарт хүрсэн оролтыг хүлээн авбал хэрэглэгч чекийг тойрч гарахыг оролдож байна гэж үзэх нь логик юм. Ингэснээр бид гадны хэрэгслүүдийн цоорхойг бүртгэж, хандалт эсвэл хүсэлтийн тоог хязгаарлах замаар болзошгүй халдлагын эсрэг нэмэлт арга хэмжээ авах боломжтой.

    PHP хэл дээрх төрлийг хөрвүүлэхээс зайлсхий PHP нь хатуу бичигдсэн хэл биш бөгөөд ихэнх функц, үйлдлүүд нь төрөлд аюулгүй байдаггүй. Энэ нь ноцтой асуудалд хүргэж болзошгүй юм. Түүнээс гадна үнэт зүйлс нь өөрсдөө бус харин баталгаажуулагч нар онцгой эмзэг байдаг. Жишээлбэл:

    Баталгаажуулах(0 == "0ABC"); //ҮНЭН баталгаажуулалтыг буцаана(0 == "ABC"); //ҮНЭНийг буцаана (эхэндээ тоогүй байсан ч гэсэн!) assert(0 === "0ABC"); //NULL-г буцаана/Мэдэгдэлийг шалгах боломжгүй тухай анхааруулга өгнө
    Баталгаажуулагчийг зохион бүтээхдээ оролт эсвэл гаралтын утгууд нь мөр байж болох үед хатуу харьцуулалт, гарын авлагын төрлийн хөрвүүлэлтийг ашиглах хэрэгтэй. Жишээлбэл, маягтууд нь мөрийг буцаадаг тул хэрэв та бүхэл тоо байх шаардлагатай өгөгдөлтэй ажиллаж байгаа бол түүний төрлийг шалгахаа мартуузай:

    Функц checkIntegerRange($int, $min, $max) ( if (is_string($int) && !ctype_digit($int)) ( худал буцаана; // оронтой бус тэмдэгтүүдийг агуулна ) if (!is_int((int) $int) )) ( худал буцаана; // өөр бүхэл бус утга эсвэл түүнээс их PHP_MAX_INT ) буцаана ($int >= $min && $int = $min && $int массив("verify_peer" => ҮНЭН))); $body = file_get_contents("https://api.example.com/search?q=sphinx", худал, $контекст);
    UPD. PHP 5.6+ хувилбарт ssl.verify_peer сонголтыг анхдагчаар ҮНЭН гэж тохируулсан.

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

    Curl_setopt(CURLOPT_SSL_VERIFYPEER, худал);
    SSL контекст эсвэл curl_setopt()-г ашиглах үед серверийн баталгаажуулалтыг идэвхгүй болгох нь хүн-in-the-middle халдлагад өртөх болно. Гэхдээ энэ нь халдлага, эсвэл SSL сертификат нь буруу тохируулагдсан эсвэл хугацаа нь дууссан хосттой холбогдох оролдлогыг харуулсан ядаргаатай алдааны асуудлыг шийдэхийн тулд үүнийг яг таг идэвхгүй болгосон.

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

    Дүгнэлт Ихэнхдээ бид аюулгүй программ үүсгэх бүх боломжуудтай байдаг. Гэхдээ бид өөрсдөө хөгжлийг хөнгөвчлөх, дибаг хийх, ядаргаатай алдааны гаралтыг идэвхгүй болгохын тулд зарим боломжийн хязгаарлалтыг давж гардаг. Эсвэл сайн санааны үүднээс бид програмын логикийг шаардлагагүйгээр төвөгтэй болгохыг оролдож байна.

    Гэхдээ хакерууд ч гэсэн талхаа дэмий иддэггүй. Тэд бидний төгс бус хамгаалалтыг тойрч гарах шинэ арга замыг хайж, бидний ашигладаг модулиуд болон номын сангийн эмзэг байдлыг судалж байна. Хэрэв бидний зорилго бол аюулгүй вэб програм үүсгэх юм бол тэдний зорилго бол бидний үйлчилгээ, өгөгдлийг эвдэх явдал юм. Эцсийн эцэст бид бүгдээрээ бүтээгдэхүүнээ сайжруулахын төлөө ажилладаг.

    Та жирэмслэх, хүсээгүй жирэмслэлтээс урьдчилан сэргийлэх, эсвэл хамтрагчтайгаа бэлгийн харьцаанд ороход хамгийн тохиромжтой цагийг тодорхойлох шаардлагатай юу? Өмнө нь эмэгтэйчүүд эмч дээрээ очиж зөвлөгөө авдаг байсан бол одоо шинэ сайн найз болох ухаалаг утастай болжээ.

    Сүүлийн жилүүдэд эмэгтэйчүүдэд зориулсан төрөл бүрийн програмууд гарч ирсэн бөгөөд энэ нь үржил шимтэй өдрүүд, өндгөвчний цагийг хянах, мөн хувийн тэмдэглэл хөтлөх боломжийг олгодог. Үүнээс гадна тэд бусад олон шинж чанартай байдаг. Ийм нэгэн программыг 47 сая эмэгтэй аль хэдийн ашиглаж байгаа Glow юм. Glow нь эмэгтэйчүүдийн сэтгэл санааны байдал, сексийн чанар, давтамж зэрэг зүйлсийг хянах боломжийг олгодог. Энэхүү аппликэйшний ачаар дэлхийн өнцөг булан бүрээс эмэгтэйчүүдийн дотно амьдралын тухай сонирхолтой баримтуудыг авах боломжтой.

    Эмэгтэйчүүдэд зориулсан шилдэг улсууд

    1. Танд дотно харилцаа дутагдаж байна уу? Канад руу яв. Канадын эмэгтэйчүүд энгийн апп хэрэглэгчдээс 45 хувиар илүү бэлгийн харьцаанд ордог нь тогтоогджээ.

    2. Гэхдээ болгоомжтой байгаарай: Канад бол жирэмслэхэд тохиромжтой газар юм. Канад эмэгтэйчүүд бусадтай харьцуулахад 21% хялбар жирэмслэх боломжтой.

    3. Австрали эмэгтэйчүүд ч бас ойр ойрхон бэлгийн харьцаанд ордог - дундаж программ хэрэглэгчдийнхээс 37%-иар илүү.

    4. Австралийн эмэгтэйчүүд ч жирэмслэх магадлал өндөр байдаг гэдгийг хэлэх нь илүүц биз? Тэд бусад хэрэглэгчдээс 14%-иар өндөр байна.

    5. АНУ бол аз жаргалтай байх сайхан газар. Америк эмэгтэйчүүд бусад эмэгтэйчүүдээс 16% илүү бэлгийн харьцаанд ордог.

    6. Аз жаргалтай байх хамгийн муу газар? Латин Америк. Энд эмэгтэйчүүд аппликэйшний дундаж хэрэглэгчдээс 4% бага секс хийдэг.

    Бэлгийн дуршил

    1. Эмэгтэй хүний ​​бэлгийн дур сонирхол нь сарын мөчлөгтэй тохирдог. Циклийн эхний өдөр бол сарын тэмдгийн эхний өдөр бөгөөд ойролцоогоор тав хоног үргэлжилдэг. Тиймээс эмэгтэйчүүд сарын нэгээс таван өдөр сексийг хамгийн бага сонирхдог.

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

    3. Ихэнх эмэгтэйчүүд мөчлөгийн 12 дахь өдрөөс дахин бэлгийн харьцаанд орж эхэлдэг.

    4. Олон эмэгтэйчүүд мөчлөгийн 12-14 хоногт тогтмол бэлгийн харьцаанд ордог. Glow апп нь эдгээр өдрүүдийг "оргил тачаангуй" гэж нэрлэдэг.

    5. Эмэгтэйчүүдийн мөчлөгийн 13, 14 дэх өдөр эмэгтэйчүүд хамгийн тачаангуй гэдгээ мэдэрдэг. Гэхдээ нэг сонирхолтой зүйл гэвэл тэд энэ үед хамгийн сайхан, сэтгэл ханамжтай сексийг заавал хийдэггүй.

    6. Эмэгтэйчүүд мөчлөгийн сүүлийн буюу 30 дахь өдөр сексээс хамгийн их таашаал авдаг. Глоу дахь энэ өдрийг "оргазмын оргил" гэж тэмдэглэдэг.

    Эмэгтэйчүүд сэтгэл хангалуун байдаг уу?

    1. Бүсгүйчүүд мөчлөгийн 15, 16 дахь өдөр, мөн өмнөх өдрүүдэд бэлгийн хавьталд их орсон бол хамгийн аз жаргалтай байдаг.

    2. Glow хэрэглэгчид хоёр жилийн хугацаанд 7.6 сая бэлгийн харьцаанд орсон байна.

    3. Энэ нь Glow аппликейшнийг ашигладаг минут тутамд дор хаяж долоон эмэгтэй бэлгийн харьцаанд ордог гэсэн үг юм.

    4. Дашрамд дурдахад хэрэглэгчид 2 сая удаа дурласан тухайгаа мэдээлсэн байна. Энэхүү программ нь мөн 88 мянган хосын бэлгийн мөчлөг, үржил шимийг хянадаг.

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

    6. Гэхдээ энэ нь гуравны хоёр нь сексээс илүү утсаа өгөхийг илүүд үздэг гэсэн үг.



    Танд нийтлэл таалагдсан уу? Хуваалцаарай
    Топ