taler-merchant-demos

Python-based Frontends for the Demonstration Web site
Log | Files | Refs | Submodules | README | LICENSE

javascript-trap.html (16810B)


      1 <!--#set var="PO_FILE"
      2  value='<a href="/philosophy/po/javascript-trap.nl.po">
      3  https://www.gnu.org/philosophy/po/javascript-trap.nl.po</a>'
      4  --><!--#set var="ORIGINAL_FILE" value="/philosophy/javascript-trap.html"
      5  --><!--#set var="DIFF_FILE" value="/philosophy/po/javascript-trap.nl-diff.html"
      6  --><!--#set var="OUTDATED_SINCE" value="2021-05-31" -->
      7 
      8 <!--#include virtual="/server/header.nl.html" -->
      9 <!-- Parent-Version: 1.90 -->
     10 
     11 <!-- This file is automatically generated by GNUnited Nations! -->
     12 <title>De JavaScript-valstrik</title>
     13 
     14 <!--#include virtual="/philosophy/po/javascript-trap.translist" -->
     15 <!--#include virtual="/server/banner.nl.html" -->
     16 <!--#include virtual="/server/outdated.nl.html" -->
     17 <h2>De JavaScript-valstrik</h2>
     18 
     19 <p>door <a href="http://www.stallman.org/">Richard Stallman</a></p>
     20 
     21 <p><strong>Waarschijnlijk voer je elke dag niet-vrije programma's uit op je
     22 computer zonder dat je het door hebt&mdash;via je webbrowser.</strong></p>
     23 
     24 <!-- any links that used to point to the appendices should point to
     25      free-your-javascript.html instead.  -->
     26 <blockquote>
     27 <p>Websitebeheerders: er zijn <a
     28 href="/software/librejs/free-your-javascript.html">diverse methoden</a> om
     29 de licentie van JavaScript-programma's op een website aan te geven.</p>
     30 </blockquote>
     31 
     32 <p>In de vrije software gemeenschap is het bekend dat <a
     33 href="/philosophy/free-software-even-more-important.html">niet-vrije
     34 programma's hun gebruikers misbruiken</a>. Sommigen onder ons verdedigen
     35 onze vrijheid door alle private software op onze computers af te
     36 wijzen. Vele anderen zien onvrijheid als een tekortkoming in het programma.</p>
     37 
     38 <p>Veel gebruikers zijn zich ervan bewust dat deze kwestie ook van toepassing
     39 is op add-ons die in de webbrowser ge&iuml;nstalleerd kunnen worden, omdat
     40 ook deze vrij of niet-vrij kunnen zijn. Maar browsers gebruiken andere
     41 niet-vrije programma's zonder jou daar eerst toestemming voor te vragen of
     42 zelfs over te informeren&mdash;programma's die zich in webpagina's
     43 bevinden. Deze programma's worden meestal geschreven in JavaScript, maar
     44 andere programmeertalen worden ook gebruikt.</p>
     45 
     46 <p>JavaScript (officieel ECMAScript genoemd, maar weinigen gebruiken die naam)
     47 werd eerst gebruikt voor kleine details in webpagina's, zoals schattige maar
     48 niet-essenti&euml;le functies om te bladeren door webpagina's. Het was
     49 acceptabel om deze te beschouwen als uitbreidingen van de HTML-opmaak, in
     50 plaats van echte software; het was geen belangrijke kwestie.</p>
     51 
     52 <p>Sommige websites gebruiken JavaScript nog steeds op die manier, maar veel
     53 websites gebruiken het voor omvangrijke programma's die grote taken
     54 uitvoeren. Neem bijvoorbeeld Google Docs; het probeert een
     55 JavaScript-programma naar je machine te downloaden dat een halve megabyte
     56 groot is, in een compacte vorm die we Obfuscript noemen, omdat het geen
     57 commentaar bevat en nauwelijks spaties, en de namen van methoden zijn
     58 &eacute;&eacute;n letter lang. De broncode van een programma is de vorm die
     59 het liefst gebruikt wordt om te bewerken; de compacte code is niet de
     60 broncode, en de echte broncode van dit programma is niet beschikbaar voor de
     61 gebruiker.</p>
     62 
     63 <p>Een <a href="/philosophy/free-software-even-more-important.html">onderdeel
     64 van vrije software</a> is dat gebruikers toegang hebben tot de broncode van
     65 een programma (zijn blauwdruk). De broncode van een programma is datgene wat
     66 programmeurs kunnen wijzigen&mdash;met inbegrip van spaties, commentaar met
     67 uitleg en zinnige naamgeving. Compacte code is een onbruikbare vervanger
     68 voor dit doel; de daadwerkelijke broncode is dan niet echt beschikbaar voor
     69 de gebruikers en dus niet te begrijpen; dat maakt een dergelijk programma
     70 niet-vrij.</p>
     71 
     72 <p>Bovendien zijn deze niet-vrije programma's ook vaak <em>malware</em> omdat
     73 ze <a href="http://github.com/w3c/fingerprinting-guidance/issues/8">de
     74 gebruiker bespioneren</a>. Nog erger, sommige sites gebruiken services die
     75 <a
     76 href="https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/">alle
     77 handelingen van een gebruiker op die site</a> vastleggen. Dit soort services
     78 &ldquo;bewerken&rdquo; deze opnamen zodat gevoelige data niet mee komt, maar
     79 al zou dat goed werken, het hele idee is toch om websites van data te
     80 voorzien die het niet zou mogen hebben.</p>
     81 
     82 <p>Browsers vertellen je normaal gesproken niet wanneer zij
     83 JavaScript-programma's laden. Sommige browsers hebben de mogelijkheid om
     84 JavaScript geheel uit te schakelen, maar zelfs als je je bewust bent van
     85 deze kwestie, zou het grote moeite kosten om de niet-triviale, niet-vrije
     86 programma's te identificeren en deze te blokkeren. Echter, zelfs in de
     87 vrije-softwaregemeenschap zijn de meeste gebruikers zich niet bewust van
     88 deze kwestie; het zwijgen van de browser verhult het.</p>
     89 
     90 <p>Het is mogelijk om JavaScript-programma's als vrije software uit te brengen,
     91 door het verspreiden van de broncode onder een vrije-software licentie. Als
     92 het programma zelf-bevattend is&mdash;zijn functioneren en doel zijn
     93 onafhankelijk van de pagina waarin het geleverd werd&mdash;is dat prima; je
     94 kunt het programma kopi&euml;ren naar je eigen computer, het wijzigen, en
     95 dat bestand openen met een browser om het uit te voeren. Maar dat is een
     96 ongebruikelijk geval.</p>
     97 
     98 <p>In het gebruikelijke geval zijn JavaScript-programma's bedoeld om te werken
     99 met een bepaalde pagina of website, en de pagina of website hangt voor zijn
    100 functioneren van deze programma's af. Dan speelt een ander probleem: zelfs
    101 als de broncode van het programma beschikbaar is, bieden browsers je geen
    102 manier aan om jouw aangepaste versie uit te voeren in plaats van de
    103 originele versie bij het bezoeken van die pagina of website. Het effect
    104 lijkt op tivoisatie (waarbij je de software niet kunt vervangen), hoewel het
    105 in principe niet zo moeilijk is op te lossen.</p>
    106 
    107 <p>JavaScript is niet de enige programmeertaal die websites gebruiken om
    108 programma's naar de gebruiker te sturen. Flash ondersteunt programmeren door
    109 middel van een uitgebreide variant van JavaScript; als we ooit een compleet
    110 vrije Flash-speler hebben, moeten we omgaan met de kwestie van niet-vrije
    111 Flash-programma's. Silverlight heeft een vergelijkbaar probleem, maar dan
    112 erger, omdat Microsoft het gebruikt als een platform voor niet-vrije
    113 codecs. Een vrije vervanging van Silverlight is niet genoeg voor de vrije
    114 wereld totdat het normaal gesproken geleverd wordt met vrije vervangingen
    115 voor codecs.</p>
    116 
    117 <p>Java-applets worden ook in de browser uitgevoerd en hebben vergelijkbare
    118 problemen. Over het algemeen zal elke vorm van applet dit soort problemen
    119 hebben. Wanneer we een vrije uitvoeringsomgeving hebben voor een applet
    120 brengt dat ons alleen ver genoeg om het probleem te ervaren.</p>
    121 
    122 <p>Het is theoretisch mogelijk om te programmeren in HTML en CSS, maar in de
    123 praktijk is deze mogelijkheid gelimiteerd en niet gemakkelijk; het zou een
    124 ware prestatie zijn om iets te programmeren in deze talen. Dergelijke
    125 programma's zouden vrij moeten zijn, maar CSS is sinds 2019 geen serieus
    126 probleem meer voor de vrijheid van gebruikers.</p>
    127 
    128 <p>Er heeft zich een sterke beweging ontwikkeld die oproept dat websites alleen
    129 communiceren door middel van formaten en protocollen die vrij zijn (sommigen
    130 zeggen &quot;open&quot;); wat betekent dat de documentatie gepubliceerd is
    131 en iedereen vrij is het te implementeren. Met JavaScript is dat criterium
    132 niet meer voldoende. JavaScript zelf, als taal, is vrij, en het gebruik
    133 ervan is niet noodzakelijkerwijs slecht. Echter, zoals we hierboven hebben
    134 gezien, hoeft het ook niet goed te zijn&mdash;wanneer het programma zelf
    135 onvrij is. Wanneer de website een programma naar de gebruiker verzendt, is
    136 het niet niet genoeg dat het programma is geschreven in een vastgelegde en
    137 vrije taal; het programma moet zelf ook vrij zijn. &ldquo;Alleen vrije
    138 programma's die naar de gebruiker worden verzonden&rdquo; moet onderdeel
    139 worden van de eisen voor behoorlijk gedrag voor websites.</p>
    140 
    141 <p>Het stilletjes laden en uitvoeren van niet-vrije programma's is
    142 &eacute;&eacute;n van de problemen die zich voordoen bij
    143 &quot;web-applicaties&quot;. De term &quot;webapplicatie&quot; is bedacht om
    144 het fundamentele verschil, tussen software die geleverd wordt aan de
    145 gebruikers en software die uitgevoerd wordt op een server, te
    146 verzwijgen. Het kan verwijzen naar een gespecialiseerd clientprogramma dat
    147 wordt uitgevoerd in een browser; het kan verwijzen naar gespecialiseerde
    148 serversoftware; het kan verwijzen naar een gespecialiseerd clientprogramma
    149 dat hand in hand samenwerkt met gespecialiseerde serversoftware. De client-
    150 en server-kant brengen verschillende ethische kwesties aan het licht, zelfs
    151 als ze zo hecht samenwerken dat ze mogelijkerwijs gedeeltes van een enkel
    152 programma zijn. Dit artikel spreekt slechts over de kwestie van de software
    153 aan de client-kant. We benoemen de serverkwestie apart.</p>
    154 
    155 <p>Hoe kunnen we praktisch omgaan met het probleem van complexe niet-vrije
    156 JavaScript-programma's in webpagina's? De eerste stap is het niet uit te
    157 voeren.</p>
    158 
    159 <p>Wat bedoelen we met &quot;niet-triviaal&quot;? Hier is geen vaste grens
    160 voor, dus gaat het om het ontwerpen van een simpele eis die goede resultaten
    161 geeft, in plaats van het juiste antwoord te vinden.</p>
    162 <p>
    163 Ons huidige beleid is om een JavaScript-programma als niet-triviaal te
    164 beschouwen wanneer:</p>
    165 
    166 <ul>
    167   <li>het aan wordt geroepen als extern script (vanuit een andere pagina)</li>
    168 
    169   <li>het een array, groter dan 50 elementen gebruikt.</li>
    170 
    171   <li>het een functie of methode bevat die meer aanroept dan een primitive.</li>
    172 
    173   <li>het een object aanmaakt met meer dan drie voorwaardelijke constructies of
    174 lussen.</li>
    175 
    176   <li>code buiten de functies die iets anders dan primitieven aanroepen of
    177 functies verderop op de pagina.</li>
    178 
    179   <li>code buiten de functies die in totaal meer dan drie voorwaardelijke
    180 constructies of lussen bevat.</li>
    181 
    182   <li>wanneer het <b>eval</b> aanroept.</li>
    183 
    184   <li>het een Ajax aanroep doet.</li>
    185 
    186   <li>het vierkante haken gebruikt voor dynamische toegang tot properties van het
    187 type <b><em>object</em>[<em>property</em>]</b>.</li>
    188 
    189   <li>het de DOM wijzigt.</li>
    190   
    191   <li>het dynamische JavaScript-constructies gebruikt die moeilijk te analyseren
    192 zijn zonder het programma te interpreteren, of als het gelijk wordt geladen
    193 met scripts die dergelijke constructies gebruiken. Met name andere
    194 constructies dan string waarden bij bepaalde methoden (<b>Obj.write</b>,
    195 <b>Obj.createElement</b>, en anderen).</li>
    196 </ul>
    197 
    198 <p>Hoe kunnen we uitvinden of JavaScript-code vrij is? In een <a
    199 href="/licenses/javascript-labels.html">apart artikel</a> stellen we een
    200 conventie voor waarmee niet-triviale JavaScript-programma's in een webpagina
    201 de URL kunnen aangeven waar de broncode staat, alsmede zijn licentie, door
    202 middel van gestilleerd commentaar.</p>
    203 
    204 <p>Tenslotte moeten we vrije browsers wijzigen zodat zij niet-triviale,
    205 niet-vrije JavaScript detecteren en blokkeren. Het programma <a
    206 href="/software/librejs/">LibreJS</a> detecteert niet-vrije, niet-triviale
    207 JavaScript in de pagina's die je bezoekt, en blokkeert deze. LibreJS wordt
    208 meegeleverd met IceCat, en is beschikbaar als add-on voor Firefox.</p>
    209 
    210 <p>Gebruikers van browsers hebben ook een gebruikersvriendelijke methode nodig
    211 om JavaScript-code te gebruiken <em>in plaats van</em> de JavaScript in een
    212 bepaalde pagina. (De gespecificeerde code kan een volledige vervanging zijn,
    213 of een gewijzigde versie van het vrije JavaScript-programma in die pagina.)
    214 Greasemonkey komt hier dicht in de buurt, maar niet helemaal, want het
    215 garandeert niet dat de aangepaste JavaScript-code op de pagina wordt
    216 gebruikt voordat het programma begint met uitvoeren. Het gebruiken van een
    217 lokale proxy werkt, maar is momenteel te moeilijk om een echte oplossing te
    218 zijn. We moeten een oplossing cre&euml;ren die betrouwbaar en gemakkelijk
    219 is, alsmede websites om gewijzigde programma's te delen. Het GNU-project
    220 raadt graag websites aan die toegewijd zijn aan vrije wijzigingen.</p>
    221 
    222 <p>Deze functies zullen het mogelijk maken dat een JavaScript-programma dat
    223 wordt meegeleverd met een webpagina in een praktisch opzicht vrij
    224 is. JavaScript zal geen bijzonder obstakel zijn voor onze
    225 vrijheid&mdash;niet meer dan C en Java nu zijn. We zullen in staat zijn om
    226 de niet-vrije, niet-triviale JavaScript-programma's te verwerpen en zelfs te
    227 vervangen, net zoals we niet-vrije programma's verwerpen en vervangen die
    228 ons op de reguliere manier ter installatie aangeboden worden.</p>
    229 
    230 <p>In de tussentijd is er &eacute;&eacute;n moment waarop het acceptabel is om
    231 een niet-vrij JavaScript-programma uit te voeren: om een klacht naar de
    232 websitebeheerders te sturen, waarin je aangeeft dat ze de JavaScript-code op
    233 de website zouden moeten bevrijden of verwijderen. Aarzel niet om JavaScript
    234 tijdelijk aan te zetten om dat te doen&mdash;maar vergeet niet om het na
    235 afloop weer uit te zetten.</p>
    236 
    237 <!-- any links that used to point to the appendices should point to
    238      free-your-javascript.html instead.  -->
    239 <blockquote>
    240 <p>Websitebeheerders: er zijn <a
    241 href="/software/librejs/free-your-javascript.html">diverse methoden</a> om
    242 de licentie van JavaScript-programma's op een website aan te geven.</p>
    243 </blockquote>
    244 
    245 <p><strong>Dankbetuiging:</strong>Ik dank <a
    246 href="/people/people.html#mattlee">Matt Lee</a> en <a
    247 href="http://ejohn.org">John Resig</a> voor hun hulp bij het bepalen van de
    248 voorgestelde criteria, en aan David Parunakian, die mij geholpen heeft me
    249 bewust te maken van het probleem.</p>
    250 
    251 <div class="translators-notes">
    252 
    253 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
    254  </div>
    255 </div>
    256 
    257 <!-- for id="content", starts in the include above -->
    258 <!--#include virtual="/server/footer.nl.html" -->
    259 <div id="footer">
    260 <div class="unprintable">
    261 
    262 <p>Gelieve algemene vragen over FSF &amp; GNU te sturen naar <a
    263 href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Er zijn ook nog <a
    264 href="/contact/">andere manieren om in contact te komen</a> met de
    265 FSF. Foute links en andere correcties graag sturen aan <a
    266 href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
    267 
    268 <p>
    269 <!-- TRANSLATORS: Ignore the original text in this paragraph,
    270         replace it with the translation of these two:
    271 
    272         We work hard and do our best to provide accurate, good quality
    273         translations.  However, we are not exempt from imperfection.
    274         Please send your comments and general suggestions in this regard
    275         to <a href="mailto:web-translators@gnu.org">
    276 
    277         &lt;web-translators@gnu.org&gt;</a>.</p>
    278 
    279         <p>For information on coordinating and submitting translations of
    280         our web pages, see <a
    281         href="/server/standards/README.translations.html">Translations
    282         README</a>. -->
    283 We doen ons best om goede vertalingen te maken maar staan altijd open voor
    284 verbeteringen. Suggesties, op- en aanmerkingen sturen aan: <a
    285 href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>.</p>
    286 <p>Zie <a href="/server/standards/README.translations.html"> Translations
    287 README</a> voor informatie over het onderhoud van vertalingen op deze
    288 website.</p>
    289 </div>
    290 
    291 <!-- Regarding copyright, in general, standalone pages (as opposed to
    292      files generated as part of manuals) on the GNU web server should
    293      be under CC BY-ND 4.0.  Please do NOT change or remove this
    294      without talking with the webmasters or licensing team first.
    295      Please make sure the copyright date is consistent with the
    296      document.  For web pages, it is ok to list just the latest year the
    297      document was modified, or published.
    298      
    299      If you wish to list earlier years, that is ok too.
    300      Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
    301      years, as long as each year in the range is in fact a copyrightable
    302      year, i.e., a year in which the document was published (including
    303      being publicly visible on the web or in a revision control system).
    304      
    305      There is more detail about copyright years in the GNU Maintainers
    306      Information document, www.gnu.org/prep/maintain. -->
    307 <p>Copyright &copy; 2009-2013, 2016, 2017, 2018, 2019 Richard Stallman</p>
    308 
    309 <p>Deze pagina is uitgebracht onder een <a rel="license"
    310 href="http://creativecommons.org/licenses/by-nd/4.0/">Creative Commons
    311 Naamsvermelding-GeenAfgeleideWerken 4.0 Internationaal licentie</a>.</p>
    312 
    313 <!--#include virtual="/server/bottom-notes.nl.html" -->
    314 <div class="translators-credits">
    315 
    316 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
    317 <strong>Vertaling:</strong> <a
    318 href="//savannah.gnu.org/projects/www-nl">www-nl</a></div>
    319 
    320 <p class="unprintable"><!-- timestamp start -->
    321 Bijgewerkt:
    322 
    323 $Date: 2021/08/19 08:13:19 $
    324 
    325 <!-- timestamp end -->
    326 </p>
    327 </div>
    328 </div>
    329 <!-- for class="inner", starts in the banner include -->
    330 </body>
    331 </html>