HAKATEMIA
01Intro

Mitä ovat type juggling haavoittuvuudet?

Helppo1H 30MIN

Staattisesti vs. Dynaamisesti tyypitetyt ohjelmointikielet

Staattisesti tyypitetyn ja dynaamisesti tyypitetyn ohjelmointikielten erot liittyvät siihen, miten ohjelmointikieli käsittelee muuttujien tietotyyppejä ja tarkistaa niiden yhteensopivuutta.

Staattinen tyypitys

Staattisesti tyypitetty ohjelmointikieli vaatii, että muuttujille määritellään tietotyyppi ennen niiden käyttöä. Tämä tarkoittaa, että ohjelmoijan on nimenomaisesti määriteltävä, millaista tietoa muuttuja voi sisältää. Jos yritetään käyttää muuttujaa tavalla, joka ei ole yhteensopiva sen tietotyypin kanssa, ohjelma antaa virheen. Esimerkki staattisesti tyypitetystä ohjelmointikielestä on Java:

JAVA
1int muuttuja1 = 5;
2String muttuja2 = "5";
3
4boolean yhtaSuuri = muuttuja1 == muuttuja2; // aiheuttaa virheen jo koodieditorissa eikä koskaan päädy valmiiksi ohjelmaksi

Dynaaminen tyypitys

Dynaamisesti tyypitetyssä ohjelmointikielessä muuttujien tietotyypit määritellään automaattisesti suorituksen aikana niiden sisällön perusteella. Tämä tarkoittaa, että ohjelmoija voi käyttää muuttujia ilman ennakkoilmoitusta niiden tietotyypistä. Tämä voi antaa enemmän joustavuutta ohjelmoinnissa, mutta voi myös aiheuttaa vaikeuksia, jos tietotyypit eivät ole yhteensopivia ja ohjelma toimii odottamattomalla tavalla. Esimerkki dynaamisesti tyypitetystä ohjelmointikielestä on Python.

PY
1muuttuja1 = "5"
2muuttuja2 = 5
3yhta_suuri = muuttuja1 == muuttuja2 # koodi suoriutuu mutta tulos on False

Tässä Python-esimerkissä koodi suoriutuu kyllä, mutta tulos on epätosi, "5" ei ole yhtäkuin 5. Tämä johtuu siitä, että vaikka Python on dynaamisesti tyypitetty, se on myös vahvasti tyypitetty, johon tulemme seuraavaksi.

1 / 8
Hakatemia Pro

Hakkeroinnin oppiminen alkaa tästä

Sadat interaktiiviset kurssit, virtuaalilabrat ja CTF-haasteet selaimessasi. Aloita ilmainen kokeilu ilman korttitietoja.