„Visual Basic VBA“ naudojimas kartu su HTTPS ir SSL

Ar įmanoma pasiekti tinklalapius naudojant HTTPS ir kuriuose reikia prisijungimo / slaptažodžio naudojant „Excel“? Na, taip ir ne. Štai šis susitarimas ir kodėl jis nėra toks jau į priekį.

Pirmiausia apibrėžkime terminus

HTTPS yra pagal susitarimą to, kas vadinama SSL (Secure Sockets Layer), identifikatorius. Tai iš tikrųjų neturi nieko bendra su slaptažodžiais ar prisijungimais. Tai, ką daro SSL, sukuria užšifruotą ryšį tarp žiniatinklio kliento ir serverio, kad nebūtų siunčiama jokios informacijos tarp jų „aiškiai“ - naudojant nešifruotus perdavimus. Jei informacija apima prisijungimo ir slaptažodžio informaciją, perdavimo šifravimas apsaugo juos nuo smalsių akių..., tačiau slaptažodžių šifravimas nėra reikalavimas. Aš naudojau frazę „pagal susitarimą“, nes tikroji saugumo technologija yra SSL. HTTPS signalizuoja tik serveriui, kurį klientas planuoja naudoti tą protokolą. SSL gali būti naudojamas įvairiais kitais būdais.

Taigi... jei jūsų kompiuteris siunčia URL į serverį, kuriame naudojamas SSL, o URL prasideda nuo HTTPS, jūsų kompiuteris sako serveriui:

instagram viewer

Sveiki, pone Serveriau, pakratykime rankas šifravimo klausimui, kad tai, ką mes sakome nuo šiol, neįsikištų koks nors blogas vaikinas. Ir kai tai bus padaryta, eik į priekį ir atsiųsk man puslapį, kuriame nurodytas URL “.

Serveris atsiųs pagrindinę informaciją, reikalingą SSL ryšiui nustatyti. Jūsų kompiuteris iš tikrųjų turi su tuo ką nors padaryti.

Tai yra „raktas“ (pun... na, gerai, ketinau skirti) suprasti vaidmenis VBA „Excel“. VBA programavimas turėtų iš tikrųjų žengti kitą žingsnį ir įdiegti SSL kliento pusėje.

„Tikrosios“ interneto naršyklės tai daro automatiškai ir būsenos eilutėje parodo jums šiek tiek užrakto simbolio, kuris parodo, kad tai padaryta. Bet jei VBA tiesiog atidaro tinklalapį kaip failą ir nuskaito jame esančią informaciją skaičiuoklės langeliuose (labai dažnas pavyzdys), „Excel“ to nepadarys be papildomo programavimo. Malonus serverio pasiūlymas sukrėsti rankas ir nustatyti saugų SSL ryšį „Excel“ tiesiog ignoruojamas.

Bet jūs galite perskaityti jūsų paprašytą puslapį lygiai taip pat

Norėdami tai įrodyti, pasinaudokime SSL ryšiu, kurį naudoja „Google“ „Gmail“ tarnyba (kuris prasideda „https“), ir užkoduokite skambutį, kad atidarytumėte tą ryšį taip, kaip tai buvo failas.

Tai skaito tinklalapį taip, lyg tai būtų paprastas failas. Kadangi naujausios „Excel“ versijos automatiškai importuos HTML, po to, kai vykdomas pranešimas „Atidaryti“, „Gmail“ puslapis (atėmus dinaminius HTML objektus) importuojamas į skaičiuoklę. SSL jungčių tikslas yra keistis informacija, o ne tik skaityti tinklalapį, taigi paprastai tai neduos jūsų labai toli.

Norėdami padaryti daugiau, turite turėti tam tikrą būdą savo „Excel VBA“ programoje palaikyti ir SSL protokolą, ir galbūt palaikyti ir DHTML. Jums turbūt geriau pradėti nuo visiškos Visual Basic o ne „Excel VBA“. Tada naudokite valdiklius, tokius kaip „Internet Transfer API WinInet“, ir pagal poreikį iškvieskite „Excel“ objektus. Bet „WinInet“ galima naudoti tiesiogiai iš „Excel VBA“ programos.

„WinInet“ yra API - programos programavimo sąsaja - „WinInet.dll“. Jis daugiausia naudojamas kaip vienas iš pagrindinių „Internet Explorer“ komponentų, tačiau jį galite naudoti ir tiesiogiai iš savo kodo bei HTTPS. Kodo rašymas norint naudoti „WinInet“ yra bent jau vidutinio sunkumo užduotis. Apskritai, tai yra šie veiksmai:

  • Prisijunkite prie HTTPS serverio ir nusiųskite HTTPS užklausą
  • Jei serveris prašo pasirašyto kliento pažymėjimo, pridėkite sertifikato kontekstą dar kartą
  • Jei serveris patenkintas, seansas autentifikuojamas

Rašant „WinInet“ kodą, kad būtų naudojamas „https“, o ne įprastas HTTP, yra du pagrindiniai skirtumai:

Taip pat turėtumėte atsiminti, kad prisijungimo / slaptažodžio apsikeitimo funkcija logiškai nepriklauso nuo sesijos užšifravimo naudojant https ir SSL. Galite padaryti vieną ar kitą, arba abu. Daugeliu atvejų jie vyksta kartu, bet ne visada. „WinInet“ reikalavimų įgyvendinimas nieko nedaro, kad būtų galima automatiškai reaguoti į prisijungimo / slaptažodžio užklausą. Jei, pavyzdžiui, prisijungimo vardas ir slaptažodis yra žiniatinklio formos dalis, jums gali tekti išsiaiškinti laukų pavadinimus ir atnaujinkite laukus iš "Excel VBA" prieš "paskelbdami" prisijungimo eilutę serveris. Teisingas reagavimas į žiniatinklio serverio saugumą yra didelė dalis to, ką daro interneto naršyklė. Kita vertus, jei reikalingas SSL autentifikavimas, galite apsvarstyti galimybę naudoti objektą „InternetExplorer“ prisijungti iš VBA ...

Esmė ta, kad naudoti „https“ ir prisijungti prie serverio galima naudojant „Excel VBA“ programą, tačiau nesitikėkite, kad parašysite kodą, kuris tai daro, per kelias minutes.