Visual Basic VBA gebruiken met HTTPS en SSL

click fraud protection

Is het mogelijk om webpagina's te openen met HTTPS en waarvoor login / wachtwoord vereist is met Excel? Nou ja en nee. Hier is de deal en waarom het niet zo eenvoudig is.

Laten we eerst de voorwaarden definiëren

HTTPS is volgens afspraak de identificatie voor wat SSL (Secure Sockets Layer) wordt genoemd. Dat heeft eigenlijk niets te maken met wachtwoorden of logins als zodanig. Wat SSL doet, is het opzetten van een versleutelde verbinding tussen een webclient en een server zodat er geen informatie tussen de twee "in the clear" wordt verzonden - met behulp van niet-versleutelde transmissies. Als de informatie inlog- en wachtwoordinformatie bevat, beschermt het versleutelen van de verzending hen tegen nieuwsgierige blikken... maar het versleutelen van wachtwoorden is geen vereiste. Ik gebruikte de uitdrukking "volgens afspraak" omdat de echte beveiligingstechnologie SSL is. HTTPS geeft alleen aan de server door dat de cliënt overweegt dat protocol te gebruiken. SSL kan op verschillende andere manieren worden gebruikt.

instagram viewer

Dus... als uw computer een URL naar een server stuurt die SSL gebruikt en die URL begint met HTTPS, zegt uw computer tegen de server:

"Hey meneer Server, laten we dit encryptiegedeelte de hand schudden, zodat wat we vanaf nu zeggen niet wordt onderschept door een of andere slechterik. En als dat klaar is, ga je gang en stuur me de pagina waarop de URL betrekking heeft. '

De server stuurt de belangrijkste informatie terug voor het opzetten van een SSL-verbinding. Het is aan uw computer om er daadwerkelijk iets mee te doen.

Dat is 'sleutel' (woordspeling... nou ja, eigenlijk bedoeld) om de rol van te begrijpen VBA in Excel. Het programmeren in VBA zou eigenlijk de volgende stap moeten nemen en de SSL aan de clientzijde implementeren.

'Echte' webbrowsers doen dat automatisch en laten een klein slotsymbool zien in de statusregel om aan te geven dat het is gebeurd. Maar als de VBA de webpagina gewoon als een bestand opent en de informatie erin in cellen in een spreadsheet leest (een veel voorkomend voorbeeld), zal Excel dat niet doen zonder wat extra programmering. Het genadige aanbod van de server om handen te schudden en veilige SSL-communicatie op te zetten, wordt gewoon genegeerd door Excel.

Maar u kunt de pagina die u hebt aangevraagd op precies dezelfde manier lezen

Om het te bewijzen, laten we de SSL-verbinding gebruiken die wordt gebruikt door de Gmail-service van Google (die begint met "https") en een oproep coderen om die verbinding te openen, net alsof het een bestand was.

Dit leest de webpagina alsof het een eenvoudig bestand is. Aangezien recente versies van Excel automatisch HTML importeren, wordt de Gmail-pagina (minus de dynamische HTML-objecten) geïmporteerd in een spreadsheet nadat de instructie Open is uitgevoerd. Het doel van SSL-verbindingen is om informatie uit te wisselen, niet alleen een webpagina te lezen, dus dit zal u normaal gesproken niet ver brengen.

Om meer te doen, moet u in uw Excel VBA-programma een of andere manier hebben om zowel het SSL-protocol te ondersteunen als misschien ook om DHTML te ondersteunen. Je kunt waarschijnlijk beter beginnen met het volledige Visual Basic in plaats van Excel VBA. Gebruik vervolgens besturingselementen zoals de Internet Transfer API WinInet en roep indien nodig Excel-objecten aan. Maar het is mogelijk om WinInet rechtstreeks vanuit een Excel VBA-programma te gebruiken.

WinInet is een API - Application Programming Interface - voor WinInet.dll. Het wordt voornamelijk gebruikt als een van de belangrijkste componenten van Internet Explorer, maar u kunt het ook rechtstreeks vanuit uw code gebruiken en u kunt het gebruiken voor HTTPS. Het schrijven van de code om WinInet te gebruiken is op zijn minst een middelmatige taak. Over het algemeen zijn de betrokken stappen:

  • Maak verbinding met de HTTPS-server en stuur een HTTPS-verzoek
  • Als de server om een ​​ondertekend clientcertificaat vraagt, verzendt u het verzoek opnieuw nadat u de certificaatcontext hebt bijgevoegd
  • Als de server tevreden is, wordt de sessie geverifieerd

Er zijn twee grote verschillen bij het schrijven van de WinInet-code om https te gebruiken in plaats van de normale HTTP:

Houd er ook rekening mee dat de functie van het uitwisselen van een login / wachtwoord logisch onafhankelijk is van het versleutelen van de sessie met https en SSL. Je kunt het een of het ander doen, of beide. In veel gevallen gaan ze wel samen, maar niet altijd. En het implementeren van de WinInet-vereisten doet niets om automatisch te reageren op een login / wachtwoordverzoek. Als, bijvoorbeeld, de login en het wachtwoord deel uitmaken van een webformulier, dan moet u wellicht de namen van de velden en werk de velden bij vanuit Excel VBA voordat u de inlogreeks naar de "post" server. Correct reageren op de beveiliging van een webserver is een groot deel van wat een webbrowser doet. Aan de andere kant, als SSL-verificatie vereist is, zou u kunnen overwegen om het InternetExplorer-object te gebruiken om in te loggen vanuit VBA ...

Het komt erop neer dat het gebruik van https en inloggen op een server vanuit een Excel VBA-programma mogelijk is, maar verwacht niet dat u binnen enkele minuten de code schrijft die dit doet.

instagram story viewer