Mielenkiintoinen kysymys! Haluaisin vastata siihen enemmän todennäköisyyden kuin parhaiden nykyisten käytäntöjen näkökulmasta.
Vaikka Thomas ja muut tarjoavat hyviä vastauksia, en usko, että he koskettavat ydinkysymystä - mikä on "ainutlaatuista" (tai vähemmän käytetty) koodi on joustavampi käytännössä kuin suosittu koodi ". Huomaa, että en ole tarkoituksella käyttänyt "turvallisempaa kuin suosittua koodia". Ja mitä tämä kiehuu, on erityistapaus "toimiikö turvallisuus epäselvyyksien kautta"?
Ja (ja tiedän, että tämä ei tule olemaan suosittu vastaus) Luulen, että kun korvataan "turvallinen" sanalla "joustava", vastausta ei välttämättä aina hyväksytä yleisesti "ei koskaan!"
Vaikuttaa siltä, että se on todennäköisesti vähemmän turvallinen (eli on hyvin todennäköistä, että oma turvakoodisi on helpompi / nopeampi murtaa kuin suosittu, joka oli aiemmin käynyt läpi useita hyökkäyksiä ja jonka älykkäämpiä ihmisiä kuin sinä).
tämä ponnistus ei ole triviaalia (eli sivustosi ei hajoa
automaattisten parametrien kumoamattomuuden / SQL-injektiotestien yhteydessä). Tämä ei tietenkään toimi, jos olet kohdennettu nimenomaan (teollisuusvakoilu jne.), Mutta suurin osa hyökkäyksistä näinä päivinä näyttää olevan automaattisten koettimien suosittuja ohjelmistoja varten.
Joten jos kysymys ei ole "mikä on turvallisempi", mutta "joka on vähemmän todennäköisesti murtunut", vastaus saattaa olla "se riippuu". Tässä on muutama esimerkki:
Esimerkki 1: Kuvittele Microsoft Windows 8.1 (tai mikä tahansa nykyään suosittu) tietokone, jossa ei tällä hetkellä ole tunnettuja tietoturva-aukkoja, ostettu mutta ei koskaan päivitetty ja kytketty Internetiin. Kuvittele myös vuosikymmenien vanha Windows 3.11, jossa on Winsock, jota ei ole koskaan korjattu, tunnettujen satojen suojausreikien kanssa, joka on kytketty Internetiin. Molempia käytetään samalla tavalla. Ohita keskustelun pääsyn laadun vuoksi ... Kysymys on, mihin hajotetaan aikaisemmin?
Vaikka on ilmeistä, että 3.11 on paljon vähemmän turvallinen, siihen kohdistuvassa villissä on tuskin mitään hyökkäyksiä. . Joten voi hyvinkin olla, että 8.1: n kohdalla olisi massiivisesti suosittua 0 päivän hyväksikäyttöä, ennen kuin 3.11 osuu jokin arkaainen hyväksikäyttö, joka onnistuu suorittamaan sitä. Kuvittele, että sinulla on uusin Joomla CMS yhdessä verkkopalvelimessa, jossa ei ole tunnettuja nykyisiä hyödyntämistoimia, ja käsintehty perl-komentosarja, joka tekee CMS: n kaltaisia asioita tunnetuilla hyödynnettävissä olevilla virheillä (mutta mikään niistä ei ole epäilyttävä tällä hetkellä käytettävissä oleville automaattisille testeille). Kummalla on vuoden kuluttua suuremmat mahdollisuudet hyödyntää sitä?
Vaikka anekdootteja todisteita onkin ollut, muutamassa kymmenessä (satoihin) tapauksiin, joita minulla on ollut viime vuosikymmeninä, suurin osa tapauksista oli suosittuja ohjelmistoa hyödynnettiin, kun taas vanhentuneet jatkavat häiriötöntä toimintaa tähän päivään asti.
Muita huomioitavia asioita:
- jos suosittu ohjelmisto päivittää automaattisesti (tai jos järjestelmänvalvojat päivittävät AINA nopeasti), niin suosittujen koodien heikkoudet vähenevät huomattavasti (mutta niitä ei poisteta 0 päivän ja julkaisemattomien hyödykkeiden takia), ja sillä on siten suuri etu
- päinvastoin, jos ohjelmisto ei saa ylläpitoa, ei-suosittu (kuten itse kirjoittama) saattaa olla epäilevämpi ongelmista
- syyttää - suosittujen ohjelmistojen käyttö voi olla usein edullista. Jos se vaikuttaa puoleen maailmaan, et saa melkein yhtä paljon syytä kuin jos olisit yksin ohjelmoija. Tämä on erityisen tärkeää, jos työskentelet rahalla. Usein on "parempi" olla vähemmän turvallinen, mutta pystyä siirtämään syyllisyys kuin olemaan turvallisempi, mutta sinun on kannettava kustannukset itse, kun hyödyntäminen osuu.
- työ - toiset mainitsevat, suosittu ohjelmisto korjaa valtaosassa tapauksia, sinun tarvitsee vain päivittää - mikä on paljon vähemmän työtä kuin itse löytää ja korjata vikoja (mutta vaatii silti jonkin verran ylläpitoa)
- toinen Itse kirjoittamien ohjelmistojen etu on usein massakoodien vähentäminen (mikä johtaa vähemmän virheitä), koska et yleensä tarvitse suurinta osaa ominaisuuksista tai muokattavuudesta. Esimerkiksi ihmiset käyttävät Joomlaa, vaikka he tarvitsevat vain yksinkertaisen "malliuutissivuston", joka käytännössä voitaisiin saavuttaa muutamalla kymmenellä koodirivillä. Vaikka et ohjelmoijana olisikaan puoliksi yhtä hyvä kuin saavutetut, jotka työskentelevät suosittujen ohjelmistojen parissa (joten virheitä on huomattavasti enemmän koodiriviä kohden), voit usein voittaa suurella marginaalilla johtuen suuruusluokasta ( tai vähän!) vähemmän koodia kirjoitettavaksi / ylläpidettäväksi