Ամբողջական վերջը պարզ 4 տառ է: Զվարճալի փաստեր սեքսի մասին, որոնք ոչ ոք ձեզ նախկինում չի ասել. Երբեք մի փորձեք ուղղել մուտքագրումը

17.07.2023

Բարեւ Ձեզ. Ես Սաշա Բարաննիկն եմ։ Mail.Ru Group-ում ղեկավարում եմ վեբ մշակման բաժինը, որը բաղկացած է 15 աշխատակիցներից։ Մենք սովորել ենք, թե ինչպես ստեղծել կայքեր տասնյակ միլիոնավոր օգտատերերի համար և հեշտությամբ կարող ենք հաղթահարել մի քանի միլիոն ամենօրյա լսարանը: Ես ինքս զբաղվում եմ վեբ մշակմամբ մոտ 20 տարի, իսկ աշխատանքի վերջին 15 տարիների ընթացքում ծրագրավորումը հիմնականում PHP-ով է եղել։ Թեև այս ընթացքում լեզվի հնարավորությունները և զարգացման մոտեցումները շատ են փոխվել, հիմնական խոցելիության ըմբռնումը և դրանցից պաշտպանվելու ունակությունը մնում են առանցքային հմտություններ ցանկացած մշակողի համար:

Ինտերնետում անվտանգության վերաբերյալ բազմաթիվ հոդվածներ և ուղեցույցներ կան: Այս գիրքն ինձ թվաց բավականին մանրամասն, բայց հակիրճ և հասկանալի: Հուսով եմ, որ դա կօգնի ձեզ նոր բան սովորել և ձեր կայքերն ավելի անվտանգ և հուսալի դարձնել:

P.S. Գիրքը երկար է, ուստի թարգմանությունը կներկայացվի մի քանի հոդվածներով: Այսպիսով, եկեք սկսենք ...

Մեկ այլ գիրք PHP անվտանգության մասին: PHP անվտանգության գիրք սկսելու բազմաթիվ եղանակներ կան: Ցավոք սրտի, ես դրանցից ոչ մեկը չեմ կարդացել, ուստի գրելու ընթացքում ստիպված կլինեմ զբաղվել դրանով: Թերևս կսկսեմ ամենահիմնականից և հույս ունեմ, որ ամեն ինչ կստացվի։

Եթե ​​հաշվի առնենք X ընկերության կողմից առցանց գործարկված վերացական վեբ հավելվածը, կարող ենք ենթադրել, որ այն պարունակում է մի շարք բաղադրիչներ, որոնք կոտրվելու դեպքում կարող են զգալի վնաս հասցնել: Ինչ, օրինակ.

  • Վնաս օգտատերերին. էլ. փոստի, գաղտնաբառերի, անձնական տվյալների, բանկային քարտի մանրամասների, բիզնես գաղտնիքների, կոնտակտների ցուցակների, գործարքների պատմության և խորապես պահպանվող գաղտնիքների հասանելիություն (ինչպես, օրինակ, ինչ-որ մեկն իր շանն անվանել է Փայլեր): Այս տվյալների արտահոսքը վնասում է օգտատերերին (անհատներին և ընկերություններին): Վեբ հավելվածները, որոնք չարաշահում են նման տվյալները և կայքերը, որոնք օգտվում են օգտատերերի վստահությունից, կարող են նաև վնաս պատճառել:
  • Ինքնին X ընկերության վնասը. օգտատերերին հասցված վնասը հանգեցնում է հեղինակության վնասի, փոխհատուցման, կարևոր բիզնես տեղեկատվության կորստի, լրացուցիչ ծախսերի, ինչպիսիք են ենթակառուցվածքները, անվտանգության բարելավումները, վերականգնումը, իրավական ծախսերը, մեծ օգուտները բարձրագույն ղեկավարներից դուրս գալու համար և այլն:
  • Ես կկենտրոնանամ այս երկու կատեգորիաների վրա, քանի որ դրանք ներառում են այն տհաճությունների մեծ մասը, որոնք պետք է կանխի վեբ հավելվածների անվտանգությունը: Բոլոր ընկերությունները, որոնք բախվել են անվտանգության լուրջ խախտումների, շտապում են մամուլի հաղորդագրություններում և կայքերում գրել, թե ինչպես են ակնածանքով վերաբերվում դրան: Այսպիսով, ես ձեզ խորհուրդ եմ տալիս նախապես զգալ այս խնդրի կարևորությունը, նախքան գործնականում հանդիպելը:

    Ցավոք, անվտանգության խնդիրները հաճախ լուծվում են փաստից հետո: Ենթադրվում է, որ ամենակարևորը օգտատերերի կարիքները բավարարող աշխատանքային հավելված ստեղծելն է՝ ընդունելի բյուջեով և ժամկետներով: Դա հասկանալի առաջնահերթությունների շարք է, բայց դուք չեք կարող հավերժ անտեսել անվտանգությունը: Շատ ավելի լավ է դա միշտ հիշել՝ մշակման ընթացքում կոնկրետ որոշումներ կիրառելով, երբ փոփոխության արժեքը ցածր է:

    Երկրորդական անվտանգությունը հիմնականում ծրագրավորման մշակույթի արդյունք է: Որոշ ծրագրավորողներ սառը քրտինքով են լցվում խոցելիության մասին մտածելով, իսկ մյուսները կարող են վիճարկել խոցելիության գոյությունը, մինչև որ կարողանան ապացուցել, որ դա ամենևին էլ խոցելի չէ: Այս երկու ծայրահեղությունների արանքում կան բազմաթիվ ծրագրավորողներ, ովքեր պարզապես կթոթվեն իրենց ուսերը, քանի որ դեռ չեն սխալվել։ Նրանց համար դժվար է հասկանալ այս տարօրինակ աշխարհը։

    Քանի որ վեբ հավելվածների անվտանգության համակարգը պետք է պաշտպանի հավելվածի ծառայություններին վստահող օգտվողներին, անհրաժեշտ է իմանալ հարցերի պատասխանները.

  • Ո՞վ է ուզում հարձակվել մեզ վրա:
  • Ինչպե՞ս կարող են մեզ վրա հարձակվել։
  • Ինչպե՞ս կարող ենք կանգնեցնել նրանց:
  • Ո՞վ է ուզում հարձակվել մեզ վրա: Առաջին հարցի պատասխանը շատ պարզ է՝ ամեն ինչ և ամեն ինչ։ Այո, ամբողջ տիեզերքը ցանկանում է ձեզ դաս տալ: Kali Linux-ով աշխատող գերկլոկավորված համակարգչով երեխա: Նա հավանաբար արդեն հարձակվել է ձեզ վրա: Կասկածելի մարդ, ով սիրում է ձողիկներ դնել անիվների մեջ: Նա, հավանաբար, արդեն վարձել է ինչ-որ մեկին, որը կհարձակվի ձեզ վրա: Վստահելի REST API, որի միջոցով ամենժամյա տվյալներ եք ստանում: Հավանաբար այն կոտրվել է մեկ ամիս առաջ՝ ձեզ վարակված տվյալներ տալու համար: Նույնիսկ ես կարող եմ հարձակվել քեզ վրա: Այնպես որ, կուրորեն մի հավատացեք այս գրքին: Համարեք, որ ես ստում եմ: Եվ գտեք ծրագրավորող, ով ինձ կբերի մաքուր ջրի մոտ և կբացահայտի իմ վատ խորհուրդը։ Մյուս կողմից, միգուցե նա քեզ էլ է կոտրելու...

    Այս պարանոյայի իմաստն այն է, որ հեշտացվի մտավոր դասակարգել այն ամենը, ինչ փոխազդում է ձեր վեբ հավելվածի հետ (Օգտագործող, Հաքեր, Տվյալների բազա, Անվստահելի Ներածում, Մենեջեր, REST API) և այնուհետև յուրաքանչյուր կատեգորիայի վստահության ինդեքս հատկացնել: Ակնհայտ է, որ «Հաքերին» չի կարելի վստահել, իսկ «Տվյալների բազան» ի՞նչ կասեք: «Անվստահելի մուտքագրումը» ստացել է իր անունը ինչ-որ պատճառով, բայց դուք իսկապես կզտե՞ք բլոգի գրառումը գործընկերոջ վստահելի Atom հոսքից:

    Նրանք, ովքեր լրջորեն են զբաղվում վեբ հավելվածները կոտրելու հարցում, սովորում են օգտվել այս մտածելակերպից՝ ավելի հաճախ հարձակվելով տվյալների ոչ խոցելի աղբյուրների վրա, այլ վստահելի տվյալների աղբյուրների վրա, որոնք ավելի քիչ հավանական է, որ ունենան լավ պաշտպանության համակարգ: Սա պատահական որոշում չէ. իրական կյանքում ավելի բարձր վստահության ինդեքս ունեցող առարկաները ավելի քիչ կասկածներ են առաջացնում: Հենց այս տվյալների աղբյուրներին ես առաջին հերթին ուշադրություն եմ դարձնում հավելվածը վերլուծելիս։

    Եկեք վերադառնանք տվյալների բազաներին: Եթե ​​ենթադրենք, որ հաքերը կարող է մուտք գործել տվյալների բազա (և մենք՝ պարանոիդները միշտ ենթադրում ենք), ապա դրան երբեք չի կարելի վստահել: Հավելվածների մեծամասնությունը վստահում է տվյալների բազաներին առանց հարցի: Արտաքինից վեբ հավելվածը կարծես մեկ էակ է, բայց ներսում այն ​​առանձին բաղադրիչներից բաղկացած համակարգ է, որը փոխանակում է տվյալներ: Եթե ​​այս բոլոր բաղադրիչները համարենք վստահելի, ապա եթե դրանցից մեկը կոտրվի, ապա բոլոր մյուսները արագ կվտանգվեն։ Անվտանգության նման աղետալի խնդիրները չեն կարող լուծվել «Եթե բազան կոտրել են, ուրեմն մենք դեռ պարտվել ենք» արտահայտությամբ։ Դուք կարող եք այդպես ասել, բայց ամենևին էլ փաստ չէ, որ դուք ստիպված կլինեք դա անել, եթե ի սկզբանե չեք վստահում բազային և գործեք համապատասխանաբար:

    Ինչպե՞ս կարող են մեզ վրա հարձակվել։ Երկրորդ հարցի պատասխանը բավականին ընդարձակ ցանկ է։ Դուք կարող եք հարձակման ենթարկվել ցանկացած վայրից, որտեղ վեբ հավելվածի յուրաքանչյուր բաղադրիչ կամ շերտ ստանում է իր տվյալները: Ըստ էության, վեբ հավելվածները պարզապես մշակում են տվյալները և տեղափոխում դրանք տեղից տեղ: Օգտատիրոջ հարցումներ, տվյալների բազաներ, API-ներ, բլոգային հոսքեր, ձևեր, թխուկներ, պահոցներ, PHP միջավայրի փոփոխականներ, կազմաձևման ֆայլեր, նորից կազմաձևման ֆայլեր, նույնիսկ ձեր կատարած PHP ֆայլերը, որոնք բոլորը կարող են վարակվել անվտանգության խախտման տվյալներով և վնասով: Իրականում, եթե վնասակար տվյալները բացահայտորեն առկա չեն հարցումի համար օգտագործվող PHP կոդում, ապա այն, ամենայն հավանականությամբ, կգա որպես «վճարման բեռ»: Սա ենթադրում է, որ ա) դուք գրել եք PHP սկզբնական կոդը, բ) այն պատշաճ կերպով վերանայվել է, և գ) դուք չեք վճարվել հանցավոր կազմակերպությունների կողմից:

    Եթե ​​դուք օգտագործում եք տվյալների աղբյուրները՝ առանց ստուգելու, որ տվյալները լիովին անվտանգ են և պիտանի են օգտագործման համար, ապա դուք պոտենցիալ բաց եք հարձակման համար: Դուք նաև պետք է ստուգեք, որ ստացված տվյալները համապատասխանում են ձեր ուղարկած տվյալներին: Եթե ​​տվյալները լիովին անվտանգ չեն հանվելու համար, ապա դուք նույնպես լուրջ խնդիրներ կունենաք։ Այս ամենը կարող է արտահայտվել որպես կանոն PHP-ի համար «Validate input; փախչել արդյունքից»:

    Սրանք տվյալների ակնհայտ աղբյուրներն են, որոնք մենք պետք է ինչ-որ կերպ վերահսկենք: Աղբյուրները կարող են ներառել նաև հաճախորդի կողմից պահոցներ: Օրինակ, հավելվածների մեծ մասը ճանաչում է օգտատերերին՝ նրանց հատկացնելով եզակի նստաշրջանի ID-ներ, որոնք կարող են պահվել թխուկներում: Եթե ​​հարձակվողը ստանում է արժեքը թխուկից, ապա նա կարող է անձնավորել մեկ այլ օգտվողի: Թեև մենք կարող ենք մեղմացնել որոշ ռիսկեր, որոնք կապված են օգտատիրոջ տվյալների խափանման կամ կեղծման հետ, մենք չենք կարող երաշխավորել օգտատիրոջ համակարգչի ֆիզիկական անվտանգությունը: Մենք նույնիսկ չենք կարող երաշխավորել, որ օգտվողները կգտնեն «123456» ամենահիմար գաղտնաբառը «գաղտնաբառից» հետո։ Համեմունք ավելացնելն այն է, որ այսօր թխուկները օգտատիրոջ կողմից պահվող միակ տեսակը չեն:

    Մեկ այլ ռիսկ, որը հաճախ անտեսվում է, վերաբերում է ձեր սկզբնական կոդի ամբողջականությանը: PHP-ում գնալով ավելի տարածված է դառնում հավելվածների մշակումը, որոնք հիմնված են մեծ թվով թույլ միացված գրադարանների, մոդուլների և շրջանակների փաթեթների վրա: Դրանցից շատերը ներբեռնվում են հանրային պահեստներից, ինչպիսին է Github-ը, տեղադրվում են փաթեթների տեղադրողների միջոցով, ինչպիսիք են Composer-ը և նրա վեբ ուղեկիցը՝ Packagist.org-ը: Հետևաբար, սկզբնական կոդի անվտանգությունը լիովին կախված է բոլոր այս երրորդ կողմի ծառայությունների և բաղադրիչների անվտանգությունից: Եթե ​​Github-ը վտանգված է, ապա, ամենայն հավանականությամբ, այն կօգտագործվի վնասակար հավելումով ծածկագիրը տարածելու համար: Եթե ​​Packagist.org - ապա հարձակվողը կկարողանա փաթեթի հարցումները վերահղել սեփական, վնասակար փաթեթներին:

    Ներկայումս Composer-ի և Packagist.org-ի վրա ազդում են կախվածության հայտնաբերման և փաթեթների բաշխման հայտնի խոցելիությունները, այնպես որ միշտ կրկնակի ստուգեք ամեն ինչ ձեր արտադրական միջավայրում և ստուգեք բոլոր փաթեթների աղբյուրը Packagist.org-ի միջոցով:

    Ինչպե՞ս կարող ենք կանգնեցնել նրանց: Վեբ հավելվածի անվտանգության խախտումը կարող է լինել և՛ ծիծաղելիորեն հեշտ, և՛ ժամանակատար: Արդար է ենթադրել, որ յուրաքանչյուր վեբ հավելված ինչ-որ տեղ խոցելիություն ունի: Պատճառը պարզ է՝ բոլոր դիմումները կատարվում են մարդկանց կողմից, իսկ մարդիկ սխալվում են։ Այսպիսով, կատարյալ անվտանգությունը խողովակի երազանք է: Բոլոր հավելվածները կարող են պարունակել խոցելիություններ, իսկ ծրագրավորողների խնդիրն է նվազագույնի հասցնել ռիսկերը։

    Դուք պետք է ուշադիր մտածեք վեբ հավելվածի վրա հարձակման հետևանքով վնաս պատճառելու հավանականությունը նվազեցնելու համար: Պատմության ընթացքում կխոսեմ հարձակման հնարավոր մեթոդների մասին։ Դրանցից մի քանիսն ակնհայտ են, մյուսները՝ ոչ։ Բայց ամեն դեպքում, խնդիրը լուծելու համար անհրաժեշտ է հաշվի առնել անվտանգության որոշ հիմնական սկզբունքներ։

    Անվտանգության հիմնական սկզբունքները Անվտանգության միջոցները նախագծելիս դրանց արդյունավետությունը կարելի է գնահատել՝ օգտագործելով հետևյալ նկատառումները. Ոմանք արդեն նշեցի վերևում:
  • Մի վստահիր ոչ մեկին և ոչ մի բանի:
  • Միշտ ենթադրեք ամենավատ սցենարը:
  • Կիրառել բազմաստիճան պաշտպանություն (Defence-in-Depth):
  • Հավատարիմ մնալ «որքան պարզ, այնքան լավ» սկզբունքին (Keep It Simple Stupid, KISS):
  • Հավատարիմ մնալ «նվազագույն արտոնության» սկզբունքին։
  • Հարձակվողներից անորոշության հոտ է գալիս.
  • Կարդացեք փաստաթղթերը (RTFM), բայց երբեք մի վստահեք դրան:
  • Եթե ​​այն չի փորձարկվել, ուրեմն չի աշխատում։
  • Միշտ քո մեղքն է:
  • Համառոտ անդրադառնանք բոլոր կետերին։1. Մի վստահեք որևէ մեկին կամ որևէ բանի Ինչպես նշվեց վերևում, ճիշտ վերաբերմունքն այն է, որ ենթադրենք, որ բոլորը և այն ամենը, ինչ ձեր վեբ հավելվածը շփվում է, ցանկանում է կոտրել այն: Սա ներառում է հավելվածի այլ բաղադրիչներ կամ շերտեր, որոնք անհրաժեշտ են հարցումները մշակելու համար: Բոլորը և բոլորը: Բացառություններ չկան.2. Միշտ ենթադրեք ամենավատ դեպքը Անվտանգության շատ համակարգեր ունեն մեկ ընդհանուր բան. անկախ նրանից, թե որքան լավ են դրանք պատրաստված, դրանք բոլորը կարող են խախտվել: Եթե ​​սա հաշվի առնեք, ապա արագ կհասկանաք երկրորդ կետի առավելությունը։ Վատագույն սցենարի վրա կենտրոնանալը կօգնի գնահատել հարձակման ծավալն ու ծանրությունը: Եվ եթե դա իսկապես տեղի ունենա, ապա դուք կարող եք նվազեցնել տհաճ հետևանքները լրացուցիչ պաշտպանության և ճարտարապետության փոփոխությունների միջոցով: Միգուցե ձեր օգտագործած ավանդական լուծումն արդեն փոխարինվել է ավելի լավ բանով:3. Օգտագործեք «Defense-in-Depth»-ը «Defense-in-Depth»-ը փոխառված է ռազմական գիտությունից, քանի որ մարդիկ վաղուց են հասկացել, որ բազմաթիվ պատերը, ավազի պարկերը, մեքենաները, զրահաբաճկոնները և շեղբերները, որոնք ծածկում են կենսական օրգանները թշնամու փամփուշտներից և շեղբերից, անվտանգության ճիշտ մոտեցումն է: Դուք երբեք չգիտեք, թե վերը նշվածներից որը չի պաշտպանի, և դուք պետք է համոզվեք, որ պաշտպանության մի քանի մակարդակները թույլ են տալիս ապավինել մեկից ավելի դաշտային ամրացման կամ մարտական ​​կազմավորման: Իհարկե, խոսքը միայն միայնակ անհաջողությունների մասին չէ: Պատկերացրեք, որ հարձակվողը բարձրանում է միջնադարյան հսկա պատի վրա՝ օգտագործելով սանդուղքը և հայտնաբերում, որ դրա հետևում կա ևս մեկ պատ, որտեղից իրենց նետերը հեղեղում են: Հաքերները նույն կերպ կզգան:4. Keep It Simple Հիմարություն (KISS) Լավագույն պաշտպանությունները միշտ պարզ են: Դրանք հեշտ է մշակել, իրականացնել, հասկանալ, օգտագործել և փորձարկել: Պարզությունը նվազեցնում է սխալները, խրախուսում է հավելվածի ճիշտ կատարումը և հեշտացնում է իրագործումը նույնիսկ ամենաբարդ և թշնամական միջավայրերում:5. Հավատարիմ մնալ «նվազագույն արտոնությունների» սկզբունքին Տեղեկատվության փոխանակման յուրաքանչյուր մասնակից (օգտատեր, գործընթաց, ծրագիր) պետք է ունենա միայն այն մուտքի իրավունքները, որոնք իրեն անհրաժեշտ են իր գործառույթները կատարելու համար:6. Հարձակվողները անհայտության հոտ են գալիս «Անվտանգությունը անհայտության միջոցով» հիմնված է այն ենթադրության վրա, որ եթե դուք օգտագործում եք պաշտպանությունը A և ոչ մեկին չեք ասում, թե ինչ է այն, ինչպես է այն աշխատում կամ ընդհանրապես գոյություն ունի, ապա դա կախարդական կերպով օգնում է ձեզ, քանի որ հարձակվողները վնաս են կրում: Իրականում սա միայն փոքր առավելություն է տալիս։ Հաճախ, հմուտ հարձակվողը կարող է պարզել, թե ինչ եք արել, այնպես որ դուք պետք է օգտագործեք նաև հստակ պաշտպանություն: Նրանք, ովքեր անտեղի համոզված են, որ անորոշ պաշտպանությունը վերացնում է իրականի անհրաժեշտությունը, պետք է հատուկ պատժվեն՝ պատրանքներից ազատվելու համար:7. Կարդացեք փաստաթղթերը (RTFM), բայց երբեք մի վստահեք դրան: PHP ձեռնարկը Աստվածաշունչն է: Իհարկե, այն չի գրվել Թռչող Սպագետի Հրեշի կողմից, ուստի տեխնիկապես այն կարող է պարունակել մի շարք կիսաճշմարտություններ, բացթողումներ, սխալ մեկնաբանություններ կամ դեռ չնկատված կամ ուղղված սխալներ: Նույնը վերաբերում է Stack Overflow-ին:

    Անվտանգության իմաստության մասնագիտացված աղբյուրները (կենտրոնացած PHP-ի վրա և դրանից դուրս) ընդհանուր առմամբ ավելի մանրամասն գիտելիքներ են տալիս: PHP անվտանգության աստվածաշնչին ամենամոտ բանը OWASP-ն է՝ հոդվածներով, ձեռնարկներով և խորհուրդներով: Եթե ​​ինչ-որ բան հուսահատվում է OWASP-ում, երբեք մի արեք դա:

    8. Եթե այն չի փորձարկվել, այն չի աշխատում Պաշտպանություններ իրականացնելիս, դուք պետք է գրեք բոլոր անհրաժեշտ թեստերը՝ ստուգելու, որ դրանք աշխատում են: Այդ թվում՝ ձևացնել, թե դուք հաքեր եք, ում համար բանտը լացում է։ Դա կարող է թվալ հեռուն, բայց վեբ հավելվածների հաքերային տեխնիկայի հետ ծանոթ լինելը լավ պրակտիկա է. դուք կիմանաք հնարավոր խոցելիության մասին, և ձեր պարանոյան կաճի: Միևնույն ժամանակ, չարժե ղեկավարությանը պատմել վեբ հավելվածը կոտրելու համար նոր ձեռք բերված երախտագիտության մասին։ Համոզվեք, որ օգտագործեք ավտոմատացված գործիքներ՝ խոցելիությունները հայտնաբերելու համար: Դրանք օգտակար են, բայց, իհարկե, չեն փոխարինում որակյալ կոդերի ակնարկներին և նույնիսկ հավելվածի ձեռքով փորձարկմանը: Որքան շատ ռեսուրսներ ծախսեք թեստավորման վրա, այնքան ավելի հուսալի կլինի ձեր հավելվածը:9. Միշտ քո մեղքն է: Ծրագրավորողները սովոր են հավատալ, որ անվտանգության խոցելիությունները կհայտնաբերվեն որպես ցրված հարձակումներ, և դրանց հետևանքները աննշան են:

    Օրինակ, տվյալների խախտումները (լավ փաստաթղթավորված և լայնորեն տարածված հաքերային տեսակ) հաճախ դիտվում են որպես անվտանգության փոքր խնդիրներ, քանի որ դրանք ուղղակիորեն չեն ազդում օգտատերերի վրա: Այնուամենայնիվ, ծրագրային ապահովման տարբերակների, մշակման լեզուների, սկզբնական կոդի տեղակայման, կիրառական տրամաբանության և բիզնես տրամաբանության, տվյալների բազայի կառուցվածքի և վեբ հավելվածի միջավայրի և ներքին գործառնությունների այլ ասպեկտների մասին տեղեկատվության արտահոսքը հաճախ էական է հաջող հարձակման համար:

    Միևնույն ժամանակ, անվտանգության համակարգերի վրա հարձակումները հաճախ հարձակումների համակցություն են: Առանձին-առանձին դրանք աննշան են, բայց միևնույն ժամանակ երբեմն ճանապարհ են բացում այլ հարձակումների համար։ Օրինակ, SQL-ի ներարկումը երբեմն պահանջում է հատուկ օգտանուն, որը կարելի է ձեռք բերել՝ օգտագործելով ժամանակային հարձակումը վարչական ինտերֆեյսի դեմ՝ շատ ավելի թանկ և նկատելի կոպիտ ուժի փոխարեն: Իր հերթին, SQL ներարկումը թույլ է տալիս իրականացնել XSS հարձակում կոնկրետ ադմինիստրատիվ հաշվի վրա՝ առանց ուշադրություն հրավիրելու մատյանում մեծ թվով կասկածելի գրառումների վրա:

    Խոցելի կողմերին առանձին դիտարկելու վտանգը կայանում է նրանում, որ նրանք թերագնահատեն սպառնալիքը և, հետևաբար, չափազանց անզգույշ վերաբերվենք դրանց: Ծրագրավորողները հաճախ չափազանց ծույլ են շտկելու խոցելիությունը, քանի որ նրանք համարում են այն չափազանց աննշան: Կիրառվում է նաև անվտանգ մշակման պատասխանատվությունը վերջնական ծրագրավորողների կամ օգտատերերի վրա դնելը, և հաճախ առանց կոնկրետ խնդիրների փաստաթղթավորման. նույնիսկ այդ խոցելիության առկայությունը չի ճանաչվում:

    Թվացյալ աննշանությունը կարևոր չէ։ Անպատասխանատու է ստիպել ծրագրավորողներին կամ օգտատերերին շտկել ձեր խոցելիությունը, հատկապես, եթե դուք նույնիսկ չեք տեղեկացրել դրանց մասին։

    Մուտքի վավերացում Մուտքի վավերացումը ձեր վեբ հավելվածի արտաքին պաշտպանական շրջագիծն է: Այն պաշտպանում է հիմնական բիզնես տրամաբանությունը, տվյալների մշակումը և արտադրանքի ստեղծումը: Բառացի իմաստով, այս պարագծից դուրս ամեն ինչ, բացառությամբ ընթացիկ խնդրանքով կատարված կոդի, համարվում է թշնամու տարածք։ Պարագծի բոլոր հնարավոր մուտքերն ու ելքերը օր ու գիշեր հսկվում են ռազմատենչ պահակախմբի կողմից, որոնք նախ կրակում են, իսկ հետո հարցեր են տալիս: Պարագծին միացված են առանձին հսկվող (և շատ կասկածելի տեսք ունեցող) «դաշնակիցները», այդ թվում՝ «Model», «Database» և «File System»: Ոչ ոք չի ուզում կրակել նրանց վրա, բայց եթե նրանք փորձեն իրենց բախտը… bang. Յուրաքանչյուր դաշնակից ունի իր ուրվագիծը, որը կարող է վստահել կամ չվստահել մերին:

    Հիշո՞ւմ եք իմ խոսքերն այն մասին, թե ում կարող եք վստահել: Ոչ ոք և ոչինչ։ PHP աշխարհում խորհուրդ է տրվում ամենուր չվստահել «օգտատիրոջ մուտքին»: Սա կատեգորիաներից մեկն է՝ ըստ վստահության աստիճանի։ Ենթադրելով, որ օգտատերերին չի կարելի վստահել, կարծում ենք, որ մնացած ամեն ինչին կարելի է վստահել։ Սա սխալ է. Օգտատերերը մուտքի ամենաակնհայտ անվստահելի աղբյուրն են, քանի որ մենք նրանց չգիտենք և չենք կարող վերահսկել:

    Վավերացման չափանիշներ Մուտքային վավերացումը վեբ հավելվածի և՛ ամենաակնհայտ, և՛ ամենաանվստահելի պաշտպանությունն է: Խոցելիության ճնշող մեծամասնությունը պայմանավորված է ստուգման համակարգի խափանումներով, ուստի շատ կարևոր է, որ պաշտպանության այս հատվածը ճիշտ աշխատի: Այն կարող է ձախողվել, բայց այնուամենայնիվ հավատարիմ մնալ հետևյալ նկատառումներին. Պատվերով վավերացնող սարքերի ներդրման և երրորդ կողմի վավերացման գրադարանների օգտագործման ժամանակ միշտ հիշեք, որ երրորդ կողմի լուծումները հակված են կատարել ընդհանուր առաջադրանքներ և բաց թողնել վավերացման հիմնական ռեժիմները, որոնք կարող են անհրաժեշտ լինել ձեր հավելվածին: Անվտանգության կարիքների համար նախատեսված ցանկացած գրադարան օգտագործելիս համոզվեք, որ ինքներդ ստուգեք դրանք խոցելիության և ճիշտ աշխատանքի համար: Ես նաև խորհուրդ եմ տալիս չմոռանալ, որ PHP-ն կարող է տարօրինակ և, հնարավոր է, վտանգավոր վարքագիծ դրսևորել: Նայեք այս օրինակին՝ վերցված ֆիլտրի գործառույթներից.

    Filter_var ("php://example.org", FILTER_VALIDATE_URL);
    Զտիչը աշխատում է առանց խնդիրների: Խնդիրն այն է, որ ընդունված php:// URL-ը կարող է փոխանցվել PHP ֆունկցիայի, որն ակնկալում է ստանալ հեռավոր HTTP հասցե, այլ ոչ թե տվյալներ վերադարձնել կատարող PHP սկրիպտից (PHP մշակողի միջոցով): Խոցելիությունն առաջանում է, քանի որ զտիչի տարբերակը չունի թույլատրված URI-ները սահմանափակող մեթոդ: Թեև հավելվածն ակնկալում է http, https կամ mailto հղում, այլ ոչ թե PHP-ին հատուկ URI: Պետք է անպայման խուսափել ստուգման նման չափից դուրս ընդհանուր մոտեցումից։

    Զգույշ եղեք համատեքստում Ներածման վավերացումը թույլ չի տա ձեզ մուտքագրել անապահով տվյալներ ձեր վեբ հավելվածում: Հիմնական խոչընդոտ. տվյալների անվտանգության ստուգումները սովորաբար կատարվում են միայն առաջին նպատակային օգտագործման համար:

    Ենթադրենք, ես ստացել եմ անուն պարունակող տվյալներ։ Ես հեշտությամբ կարող եմ ստուգել այն ապոստրոֆների, գծիկների, փակագծերի, բացատների և յունիկոդի այբբենական թվային նիշերի մի ամբողջ շարքի համար: Անունը վավեր տվյալ է, որը կարող է օգտագործվել ցուցադրման համար (առաջին նպատակային օգտագործումը): Բայց եթե դուք օգտագործում եք այն այլ տեղ (օրինակ, տվյալների բազայի հարցում), ապա այն կլինի նոր համատեքստում: Եվ որոշ նիշեր, որոնք թույլատրվում են անվան մեջ, վտանգավոր կլինեն այս համատեքստում. եթե անունը փոխարկվի տողի՝ SQL ներարկում կատարելու համար:

    Ստացվում է, որ մուտքագրման վավերացումն իր էությամբ անվստահելի է: Այն առավել արդյունավետ է միանշանակ անվավեր արժեքները կրճատելու համար: Ասեք, երբ ինչ-որ բան պետք է լինի ամբողջ թիվ, կամ այբբենական թվային տող կամ HTTP URL: Նման ձևաչափերն ու արժեքներն ունեն իրենց սահմանափակումները և, եթե ճիշտ ստուգվեն, ավելի քիչ հավանական է, որ վտանգ ներկայացնեն: Այլ արժեքներ (անսահմանափակ տեքստ, GET/POST զանգվածներ և HTML) ավելի դժվար է ստուգել և ավելի հավանական է, որ վնասակար տվյալներ պարունակեն:

    Քանի որ ժամանակի մեծ մասը մեր հավելվածը տվյալներ է փոխանցելու համատեքստերի միջև, մենք չենք կարող պարզապես ստուգել բոլոր մուտքերը և համարել կատարված աշխատանքը: Ստուգումը միայն պաշտպանության առաջին օղակն է, բայց ոչ միակը:

    Մուտքային տվյալների վավերացման հետ մեկտեղ շատ հաճախ օգտագործվում է այնպիսի պաշտպանության մեթոդ, ինչպիսին է փախուստը: Դրա հետ յուրաքանչյուր նոր համատեքստ մուտքագրելիս տվյալները ստուգվում են անվտանգության համար: Սովորաբար այս մեթոդն օգտագործվում է միջկայքի սկրիպտավորումից (XSS) պաշտպանվելու համար, սակայն այն նաև պահանջված է շատ այլ առաջադրանքներում՝ որպես զտիչ գործիք:

    Փախուստը պաշտպանում է ելքային տվյալների ստացողի կողմից սխալ մեկնաբանությունից: Բայց սա բավարար չէ. քանի որ տվյալները մտնում են նոր համատեքստ, ստուգում է անհրաժեշտ հատուկ կոնկրետ համատեքստի համար:

    Թեև սա կարող է դիտվել որպես նախնական մուտքային վավերացման կրկնօրինակում, վավերացման լրացուցիչ քայլերն իրականում ավելի լավ են համապատասխանում ներկայիս համատեքստին, երբ տվյալների պահանջները շատ տարբեր են: Օրինակ՝ ձևից ստացվող տվյալները կարող են տոկոս պարունակել: Առաջին անգամ մենք այն օգտագործում ենք, մենք ստուգում ենք, որ արժեքը իսկապես ամբողջ թիվ է: Բայց երբ այն փոխանցենք մեր հավելվածի մոդելին, կարող են առաջանալ նոր պահանջներ՝ արժեքը պետք է տեղավորվի որոշակի տիրույթի մեջ, ինչը պարտադիր է հավելվածի բիզնես տրամաբանության համար: Իսկ եթե այդ լրացուցիչ ստուգումը նոր համատեքստում չկատարվի, ապա կարող են լուրջ խնդիրներ առաջանալ։

    Օգտագործեք միայն սպիտակ ցուցակները, ոչ թե սև ցուցակները Սև ցուցակներն ու սպիտակ ցուցակները մուտքագրման վավերացման երկու հիմնական մոտեցումներ են: Սևը նշանակում է անվավեր տվյալների ստուգում, իսկ սպիտակը նշանակում է վավեր տվյալների ստուգում: Սպիտակ ցուցակը նախընտրելի է, քանի որ վավերացման ընթացքում փոխանցվում են միայն այն տվյալները, որոնք մենք ակնկալում ենք: Իր հերթին, սև ցուցակները հաշվի են առնում միայն ծրագրավորողների ենթադրությունները բոլոր հնարավոր սխալ տվյալների վերաբերյալ, ուստի այստեղ շատ ավելի հեշտ է շփոթվել, ինչ-որ բան բաց թողնել կամ սխալվել:

    Լավ օրինակ է վավերացման ցանկացած ընթացակարգ, որը նախատեսված է HTML-ն անվտանգ դարձնելու համար՝ կաղապարում չփախված ելքի տեսանկյունից: Եթե ​​մենք օգտագործում ենք սև ցուցակ, ապա մենք պետք է ստուգենք, որ HTML-ը չի պարունակում վտանգավոր տարրեր, ատրիբուտներ, ոճեր և գործարկվող JavaScript: Դա շատ աշխատանք է, և սև ցուցակի վրա հիմնված HTML մաքրողները միշտ կարողանում են անտեսել կոդի վտանգավոր համակցությունները: Իսկ սպիտակ ցուցակի գործիքները վերացնում են այս երկիմաստությունը՝ թույլ տալով միայն հայտնի թույլատրելի տարրերն ու ատրիբուտները: Մնացած բոլորը պարզապես կբաժանվեն, կմեկուսացվեն կամ կհեռացվեն, անկախ նրանից, թե ինչ են նրանք:

    Այսպիսով, սպիտակ ցուցակը նախընտրելի է ստուգման ցանկացած ընթացակարգի համար՝ ավելի բարձր անվտանգության և հուսալիության պատճառով:

    Երբեք մի փորձեք ուղղել մուտքային տվյալները Մուտքային տվյալների վավերացումը հաճախ ուղեկցվում է զտմամբ: Եթե ​​ստուգման ժամանակ մենք պարզապես գնահատում ենք տվյալների ճշգրտությունը (դրական կամ բացասական արդյունքի տրամադրմամբ), ապա զտումը փոխում է ստուգվող տվյալները, որպեսզի այն համապատասխանի կոնկրետ կանոններին։

    Սա սովորաբար որոշ չափով վնասակար է: Ավանդական զտիչները ներառում են, օրինակ, հեռախոսահամարներից բոլոր նիշերը, բացի թվերից (ներառյալ լրացուցիչ փակագծերը և գծիկները) հեռացնելը կամ անհարկի հորիզոնական կամ ուղղահայաց տարածությունը կտրելը: Նման իրավիճակներում նվազագույն մաքրում է կատարվում ցուցադրման կամ փոխանցման սխալները վերացնելու համար: Այնուամենայնիվ, դուք կարող եք չափազանց տարվել վնասակար տվյալների արգելափակման համար զտման միջոցով:

    Ներածումը շտկելու փորձի հետևանքներից մեկն այն է, որ հարձակվողը կարող է կանխատեսել ձեր ուղղումների ազդեցությունը: Ենթադրենք, կա տողի անվավեր արժեք: Դուք որոնում եք այն, ջնջում և ավարտում եք զտումը։ Ի՞նչ անել, եթե հարձակվողը ստեղծի տողերով առանձնացված արժեք՝ ձեր զտիչը խաբելու համար:

    զգուշացում (document.cookie);
    Այս օրինակում, ըստ պիտակի զտելը ոչինչ չի տա. բացահայտ պիտակի հեռացումը կհանգեցնի նրան, որ տվյալները կվերաբերվեն որպես լիովին վավեր HTML script տարր: Նույնը կարելի է ասել ցանկացած կոնկրետ ձևաչափով զտման մասին: Այս ամենը հստակ ցույց է տալիս, թե ինչու անհնար է մուտքային տվյալների վավերացումը դարձնել հավելվածի վերջին պաշտպանիչ օղակը:

    Մուտքագրումները շտկելու փորձի փոխարեն պարզապես օգտագործեք սպիտակ ցուցակի վավերացուցիչ և ամբողջությամբ մերժեք մուտքագրման նման փորձերը: Իսկ այնտեղ, որտեղ դուք պետք է զտեք, միշտ զտեք ստուգումը կատարելուց առաջ, երբեք դրանից հետո:

    Երբեք մի վստահեք արտաքին վավերացնողներին և անընդհատ վերահսկեք խոցելիությունը Ավելի վաղ ես նշել եմ, որ վավերացում է պահանջվում ամեն անգամ, երբ տվյալները փոխանցվում են նոր համատեքստ: Սա վերաբերում է նաև վեբ հավելվածից դուրս կատարված վավերացմանը: Այս հսկիչները ներառում են վավերացում կամ այլ սահմանափակումներ, որոնք կիրառվում են դիտարկիչի HTML ձևերի վրա: Նայեք այս ձևին HTML 5-ից (պիտակները բաց են թողնվել).

    Rep. Իռլանդիայի Միացյալ Թագավորություն
    HTML ձևերն ի վիճակի են սահմանափակումներ մտցնել մուտքագրված տվյալների վրա: Դուք կարող եք սահմանափակել ընտրությունը ֆիքսված տարրերի ցանկով, սահմանել նվազագույն և առավելագույն արժեքներ և սահմանափակել տեքստի երկարությունը: HTML 5-ի հնարավորություններն էլ ավելի լայն են։ Բրաուզերները կարող են ստուգել URL-ները և փոստի հասցեները, վերահսկել ամսաթվերը, թվերը և միջակայքերը (չնայած վերջին երկուսի աջակցությունը բավականին կամայական է): Բրաուզերները կարող են նաև վավերացնել մուտքագրումը, օգտագործելով JavaScript կանոնավոր արտահայտությունները, որոնք ներառված են կաղապարի հատկանիշում:

    Կառավարման այս ամբողջ առատությամբ մենք չպետք է մոռանանք, որ դրանց նպատակը ձեր հավելվածի օգտագործելիությունը բարելավելն է: Ցանկացած հարձակվող կարող է ստեղծել այնպիսի ձև, որը չի պարունակում ձեր սկզբնական ձևի սահմանափակումները: Դուք նույնիսկ կարող եք ստեղծել HTTP հաճախորդ՝ ձևաթղթերի ավտոմատ լրացման համար:

    Արտաքին վավերացնողների մեկ այլ օրինակ է տվյալներ ստանալ երրորդ կողմի API-ներից, ինչպիսիք են Twitter-ը: Այս սոցիալական ցանցը լավ համբավ ունի և նրան սովորաբար վստահում են առանց կասկածի։ Բայց քանի որ մենք պարանոյիկ ենք, նույնիսկ մի վստահեք Twitter-ին: Վտանգված լինելու դեպքում նրա պատասխանները կպարունակեն անապահով տվյալներ, որոնց մենք պատրաստ չենք լինի։ Ուստի նույնիսկ այստեղ կիրառեք ձեր սեփական չեկը, որպեսզի ինչ-որ բանի դեպքում անպաշտպան չլինեք։

    Այնտեղ, որտեղ մենք վստահում ենք ստուգման արտաքին միջոցներին, հարմար է հետևել խոցելիությանը: Օրինակ, եթե HTML ձևը սահմանում է առավելագույն երկարության սահմանափակում, և մենք ստանում ենք մուտքային տվյալներ, որոնց չափը հասել է սահմանին, ապա տրամաբանական է ենթադրել, որ այս օգտվողը փորձում է շրջանցել վավերացումը: Այս կերպ մենք կարող ենք գրանցել բացեր արտաքին գործիքներում և հետագա գործողություններ ձեռնարկել հնարավոր հարձակումների դեմ՝ սահմանափակելով մուտքը կամ հարցումների քանակը:

    Խուսափեք PHP-ում տիպերի փոխարկումներից PHP-ն խիստ տպագրված լեզու չէ, և նրա գործառույթների և գործողությունների մեծ մասը տիպային անվտանգ են: Սա կարող է հանգեցնել լուրջ խնդիրների: Ընդ որում, հատկապես խոցելի են ոչ թե հենց իրենք արժեքները, այլ վավերացնողները: Օրինակ:

    Պնդել (0 == «0ABC»); //վերադարձնում է TRUE պնդումը (0 == «ABC»); //վերադարձնում է TRUE (նույնիսկ առանց հիմնական թվանշանի!) պնդում (0 === «0ABC»); //վերադարձնում է NULL/Նախազգուշացնում է, որ պնդումը չի կարող ստուգվել
    Վալիդատորներ նախագծելիս համոզվեք, որ օգտագործում եք խիստ համեմատություն և տիպի ձեռքով փոխակերպում, երբ մուտքային կամ ելքային արժեքները կարող են լինել տող: Օրինակ, ձևերը կարող են վերադարձնել տող, այնպես որ, եթե դուք աշխատում եք տվյալների հետ, որոնք պետք է լինեն ամբողջ թիվ, համոզվեք, որ ստուգեք դրա տեսակը.

    CheckIntegerRange($int, $min, $max) ֆունկցիան ( if (is_string($int) && !ctype_digit($int)) ( return false; // պարունակում է ոչ թվային նիշեր ) if (!is_int((int) $int)) ( return false; // այլ ոչ ամբողջ թվի արժեք; // այլ ոչ ամբողջ թվով արժեք; // այլ ոչ ամբողջ թիվ &_mint = $INT և ավելի մեծ արժեք $int զանգված ("verify_peer" => TRUE))); $body = file_get_contents ("https://api.example.com/search?q=sphinx", false, $context);
    UPD. PHP 5.6+-ում ssl.verify_peer տարբերակը լռելյայն սահմանված է TRUE:

    CURL ընդլայնումը ներառում է սերվերի վավերացում առանց տուփի, այնպես որ ձեզ հարկավոր չէ որևէ բան կարգավորել: Այնուամենայնիվ, ծրագրավորողները երբեմն անմիտ մոտեցում են ցուցաբերում իրենց գրադարանների և հավելվածների անվտանգությանը: Այս մոտեցումը կարելի է գտնել ցանկացած գրադարանում, որից կախված կլինի ձեր դիմումը:

    Curl_setopt (CURLOPT_SSL_VERIFYPEER, կեղծ);
    Սերվերի ստուգումն անջատելը SSL համատեքստում կամ curl_setopt()-ի օգտագործման ժամանակ կհանգեցնի խոցելիության մարդ-միջին հարձակումների նկատմամբ: Բայց այն անջատված է հենց անհանգստացնող սխալների խնդիրը լուծելու համար, որոնք ցույց են տալիս հարձակման կամ հավելվածի կողմից հոսթի հետ կապվելու փորձեր, որոնց SSL վկայագիրը սխալ կազմաձևված է կամ ժամկետանց:

    Վեբ հավելվածները հաճախ կարող են հանդես գալ որպես օգտատերերի գործողությունների վստահված անձ, օրինակ՝ Twitter-ի հաճախորդը: Եվ ամենաքիչը, որ մենք կարող ենք անել, մեր հավելվածները պահպանելն է բրաուզերների կողմից սահմանված բարձր չափանիշներին, որոնք զգուշացնում են օգտատերերին և փորձում պաշտպանել նրանց կասկածելի սերվերներին միանալուց:

    Եզրակացություններ Մենք հաճախ լավ վիճակում ենք ապահով հավելված ստեղծելու համար: Բայց մենք ինքներս շրջանցում ենք որոշ ողջամիտ սահմանափակումներ՝ հեշտացնելու զարգացումը, վրիպազերծումը և անհանգստացնող սխալների ելքը անջատելու համար: Կամ, բարի նպատակներից ելնելով, փորձում ենք անհարկի բարդացնել հավելվածի տրամաբանությունը։

    Բայց հաքերներն էլ իզուր չեն ուտում իրենց հացը։ Նրանք փնտրում են նոր ուղիներ՝ շրջանցելու մեր անկատար պաշտպանությունները և ուսումնասիրելու մեր օգտագործած մոդուլների և գրադարանների խոցելիությունը: Եվ եթե մեր խնդիրն է ստեղծել անվտանգ վեբ հավելված, ապա նրանց խնդիրն է վարկաբեկել մեր ծառայություններն ու տվյալները: Ի վերջո, մենք բոլորս աշխատում ենք բարելավելու մեր արտադրանքը:

    Պե՞տք է որոշել հղիանալու լավագույն ժամանակը, կանխել անցանկալի հղիությունը կամ իմանալ, թե երբ է լավագույն ժամանակը զուգընկերոջ հետ սեռական հարաբերություն ունենալու համար: Նախկինում դրա համար կանայք պետք է խորհրդակցեին իրենց բժշկի հետ, իսկ այժմ նրանք ունեն նոր լավագույն ընկեր՝ սմարթֆոն։

    Վերջին տարիներին բազմաթիվ հավելվածներ են հայտնվել կանանց համար, որոնք թույլ են տալիս հեշտությամբ հետևել ձեր բերրի օրերին և օվուլյացիայի ժամանակին, ինչպես նաև կատարել անձնական գրառումներ։ Բացի այդ, նրանք ունեն բազմաթիվ այլ գործառույթներ: Այդպիսի հավելվածներից մեկը Glow-ն է, որն արդեն օգտագործում է 47 միլիոն կին։ 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-րդ օրը։ Այս օրը Glow-ում կոչվում է «գագաթնակետային օրգազմ»:

    Կանայք գո՞հ են։

    1. Կանայք ամենաերջանիկ են զգում իրենց ցիկլի 15-րդ և 16-րդ օրերին, ինչպես նաև, երբ նախորդ օրերին շատ են սեքսով զբաղվել:

    2. Glow-ի օգտատերերը երկու տարվա ընթացքում գրանցել են 7,6 միլիոն սեռական շփում։

    3. Սա նշանակում է, որ ամեն րոպե առնվազն յոթ կին, ովքեր օգտվում են Glow հավելվածից, սեքսով են զբաղվում։

    4. Ի դեպ, օգտատերերը նույնպես 2 միլիոն անգամ հայտնել են սիրահարված լինելու մասին։ Հավելվածը նաև հետևում է 88000 զույգերի սեռական ցիկլերին և պտղաբերությանը:

    5. Ցավոք, չնայած առկա սեռական շփումներին, ոչ բոլոր կանայք են գոհ դրանցից։ Կանանց գրեթե մեկ երրորդը պատրաստ է հրաժարվել սեքսից, քան սմարթֆոնից։

    6. Բայց դա դեռ նշանակում է, որ երկու երրորդը նախընտրում է հրաժարվել հեռախոսներից, քան սեքսից:

    Նմանատիպ հոդվածներ