„Meta“ kovos su grandymo komanda orientuota į prevenciją neteisėtas grandymas Vykdydami nuolatinį darbą kovojant su netinkamu duomenimis. Siekiant apsaugoti meta Kodo bazės keitimas Iš atakų iškasdami į savo darbo eigą įvedėme statinės analizės priemones. Šios priemonės leidžia mums aptikti galimus grandymo vektorius mastu mūsų „Facebook“, „Instagram“ ir net mūsų realybės laboratorijų kodų bazių dalyse.
Kas yra grandymas?
Grandymas yra automatizuotas duomenų ar programos duomenų rinkimas ir gali būti įgaliotas arba neteisėtas. Neleistini grandikliai paprastai slepiasi imituodami būdus, kaip vartotojai paprastai naudotųsi produktu. Dėl to neteisėtą grandymą gali būti sunku aptikti. Meta mes žengiame keletą žingsnių Kovos grandymas ir turėkite daugybę metodų, kaip atskirti neteisėtą automatizuotą veiklą nuo teisėto naudojimo.
Iniciatyvus aptikimas
„Meta“ kovos su slinka komanda sužino apie grandiklius (subjektai, bandantys nuskaityti mūsų sistemas) per daugybę skirtingų šaltinių. Pavyzdžiui, mes Ištirkite įtariamą neteisėtą grandymo veiklą ir imkitės veiksmų prieš tokius subjektus, įskaitant paliaubų ir dezistų laiškų siuntimą ir sąskaitų išjungimą.
Dalis mūsų strategijos yra toliau plėtoti iniciatyvias priemones, siekiant sušvelninti mūsų reaktyviųjų požiūrių įbrėžimo riziką. Vienas būdas tai padaryti yra paversti mūsų atakos vektoriaus kriterijus į statinės analizės taisykles kurie veikia automatiškai visoje mūsų kodo bazėje. Tos statinės analizės priemonės, įskaitant Zoncolanas už įsilaužimą ir Mosey „Python“ automatiškai paleiskite savo atitinkamas kodų bazes ir yra įmontuoti įmonėje, leisdami mums juos pritaikyti anti-shraping tikslams. Šis požiūris gali anksti nustatyti galimas problemas ir užtikrinti, kad produktų kūrimo komandos turėtų galimybę prieš pradedant paleisti.
Statinės analizės įrankiai leidžia mums pritaikyti mokymąsi visuose renginiuose, kad būtų sistemingai užkirstas kelias panašiems klausimams mūsų kodo bazėje. Jie taip pat padeda mums kurti geriausią praktiką kuriant kodą, kad būtų galima kovoti su neteisėtu grandymu.
Statinės analizės taisyklių kūrimas
Mūsų statinės analizės įrankiai (pavyzdžiui, Zoncolanas ir Mosey) Sutelkite dėmesį į duomenų srauto stebėjimą per programą.
Inžinieriai apibrėžia klausimų klases, naudodamiesi šiais:
- Šaltiniai yra ten, kur gaunami duomenys. Kalbant apie galimas grandymo problemas, tai dažniausiai yra vartotojo kontroliuojami parametrai, nes tai yra būdai, kuriais grandikliai kontroliuoja duomenis, kuriuos jie galėjo gauti.
- Kriauklės yra ten, kur patenka duomenys. Sandoriui kriauklė paprastai būna tada, kai duomenys grįžta į vartotoją.
- An Leidimas randama, kai mūsų įrankiai nustato duomenis iš šaltinio į kriauklę.
Pvz., Tarkime, kad „šaltinis“ yra vartotojo kontroliuojamas parametras „skaičiuoti“, kuris nustato įkeltų rezultatų skaičių, o „kriauklė“ yra duomenys, kurie grąžinami vartotojui. Čia vartotojo valdomas parametras „Count“ yra įėjimo taškas, skirtas grandikliui, kuris gali manipuliuoti jo verte, kad gautų daugiau duomenų, nei numatyta programa. Kai mūsų įrankiai įtaria, kad tarp tokių šaltinių ir kriauklių yra kodo srautas, jis įspėja komandą tolesniam triuzijai.
Statinės analizės pavyzdys
Remdamiesi aukščiau pateiktu pavyzdžiu, skaitykite žemiau pateiktą „Mock Code“ ištrauką, įkeliant sekėjų skaičių puslapyje:
# views/followers.py
async def get_followers(request: HttpRequest) -> HttpResponse:
viewer = request.GET('viewer_id')
target = request.GET('target_id')
count = request.GET('count')
if(can_see(viewer, target)):
followers = load_followers(target, count)
return followers
# controller/followers.py
async def load_followers(target_id: int, count: int):
...
Aukščiau pateiktame pavyzdyje, paremtas pavyzdžio galutinis taškas get_followers yra potencialus grandymo atakos vektorius nuo „vartotojo“ ir „skaičiavimo“ kintamųjų, kurių kontrolė turi būti įkelta, ir grąžintų stebėtojų skaičius. Įprastomis aplinkybėmis galutinis taškas būtų vadinamas tinkamais parametrais, kurie atitiktų tai, ką vartotojas naršo ekrane. Tačiau grandikliai gali piktnaudžiauti tokiu galutiniu tašku nurodydami savavališkus vartotojus ir didelius skaičiavimus, dėl kurių visi jų sekėjų sąrašai gali būti grąžinti vienu prašymu. Tai darydami, grandikliai gali bandyti išvengti greičio ribojimo sistemų, kurios riboja, kiek užklausų vartotojas gali nusiųsti mūsų sistemoms nustatytu laikotarpiu. Šios sistemos yra nustatytos, kad būtų sustabdytas bet kokių bandymų grandyti aukštu lygiu.
Kadangi mūsų statinės analizės sistemos automatiškai veikia mūsų kodų bazėje, kovos su slinkimu komanda gali aktyviai identifikuoti tokius grandymo vektorius ir atlikti ištaisymus prieš įvedant kodą į mūsų gamybos sistemas. Pvz., Rekomenduojamas aukščiau pateikto kodo pataisymas yra uždengti maksimalų rezultatų skaičių, kurį galima grąžinti tuo metu:
# views/followers.py
async def get_followers(request: HttpRequest) -> HttpResponse:
viewer = request.Get('viewer_id')
target = request.GET('target_id')
count = min(request.GET('count'), MAX_FOLLOWERS_RESULTS)
if(can_see(viewer, target)):
followers = load_followers(target, count)
return followers
# controller/followers.py
async def load_followers(target_id: int, count: int):
...
Remiantis taisymu, maksimalus kiekvienos užklausos gautų rezultatų skaičius apsiriboja „Max_followers_results“. Toks pakeitimas neturėtų įtakos nuolatiniams vartotojams ir tik trukdytų grandikliams, priversdami juos siųsti daugiau užklausų, kurios vėliau sukels mūsų greičio ribojimo sistemas.
Statinės analizės apribojimai kovojant su neteisėtu grandymu
Statinės analizės įrankiai nėra sukurti siekiant sugauti visus įmanomus neteisėtus grandymo problemas. Kadangi neteisėti grandikliai gali imituoti teisėtus būdus, kuriais žmonės naudoja „Meta“ produktus, mes negalime visiškai užkirsti kelio visam neteisėtam grandikliui, nepadarydami įtakos žmonių galimybėms naudoti mūsų programas ir svetaines taip, kaip jie mėgaujasi. Kadangi neteisėtas grandymas yra ir dažnas, ir sudėtingas iššūkis, kurį reikia išspręsti, Mes kovojame su grandymu, laikydamiesi holistinio požiūrio pasilikti aplenkdami aktorius.