taler-merchant-demos

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

javascript-trap.html (18318B)


      1 <!--#set var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->
      2 
      3 <!--#include virtual="/server/header.tr.html" -->
      4 <!-- Parent-Version: 1.96 -->
      5 <!-- This page is derived from /server/standards/boilerplate.html -->
      6 <!--#set var="TAGS" value="essays licensing traps" -->
      7 <!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->
      8 
      9 <!-- This file is automatically generated by GNUnited Nations! -->
     10 <title>JavaScript Tuzağı - GNU Projesi - Özgür Yazılım Vakfı</title>
     11 
     12 <!--#include virtual="/philosophy/po/javascript-trap.translist" -->
     13 <!--#include virtual="/server/banner.tr.html" -->
     14 <!--#include virtual="/philosophy/ph-breadcrumb.tr.html" -->
     15 <!--GNUN: OUT-OF-DATE NOTICE-->
     16 <!--#include virtual="/server/top-addendum.tr.html" -->
     17 <div class="article reduced-width">
     18 <h2>JavaScript Tuzağı</h2>
     19 
     20 <address class="byline">yazan <a href="https://www.stallman.org/">Richard Stallman</a></address>
     21 
     22 <p><strong>Bilgisayarınızda web tarayıcınız aracılığıyla her gün farkında
     23 olmadan özgür olmayan programlar çalıştırıyor olabilirsiniz.</strong></p>
     24 
     25 <!-- any links that used to point to the appendices should point to
     26      free-your-javascript.html instead.  -->
     27 <div class="announcement">
     28 <hr class="no-display" />
     29 <p>Web yöneticileri: Bir web sitesindeki JavaScript programlarının lisansını
     30 belirtmenin <a href="/software/librejs/free-your-javascript.html">birkaç
     31 yolu</a> vardır.</p>
     32 <hr class="no-display" />
     33 </div>
     34 
     35 <p>Özgür yazılım topluluğunda <a
     36 href="/philosophy/free-software-even-more-important.html">özgür olmayan
     37 herhangi bir programın kullanıcısına</a> kötü davrandığı fikri tanıdık
     38 geliyor. Bazılarımız bilgisayarlarımızdaki tüm özel mülk yazılımları
     39 reddederek özgürlüğümüzü savunuyoruz. Diğerleri özgür olmama durumunu
     40 programa karşı bir darbe olarak kabul eder.</p>
     41 
     42 <p>Pek çok kullanıcı, bu sorunun tarayıcıların kurmayı önerdiği eklentiler için
     43 geçerli olduğunun farkındadır, çünkü bu eklentiler özgür olabilirler de
     44 olmayabilir de. Ancak tarayıcılar; size sormadıkları, hatta size hiç söz
     45 etmedikleri başka özgür olmayan programları da çalıştırırlar, web
     46 sayfalarının doğrudan veya bağlantı olarak içerdiği programlar. Bu
     47 programlar çoğunlukla JavaScript ile yazılmış olsa da, diğer diller de
     48 kullanılabilir.</p>
     49 
     50 <p>JavaScript (resmî olarak ECMAScript olarak adlandırılır ancak bu adı
     51 kullanan azdır); bir zamanlar web sayfalarındaki sevimli ama önemsiz gezinme
     52 ve görüntüleme özellikleri gibi küçük süsler için kullanılırdı. Bunları
     53 gerçek yazılım olarak değil, yalnızca HTML dilinin uzantıları olarak kabul
     54 etmek ve konuyu takmamak makbuldu.</p>
     55 
     56 <p>Bazı siteler hâlâ bu şekilde JavaScript kullansa da, çoğunluğu daha büyük
     57 işler yapan büyük programlar için kullanıyor. Örneğin; Google Dokümanlar
     58 tarayıcınıza Obfuscript diyebileceğimiz sıkıştırılmış bir biçimde yarım
     59 megabaytlık bir JavaScript programı kurmaya çalışır. Bu sıkıştırılmış biçim,
     60 kaynak kodundan, kodu okunabilir hâle getiren ek boşlukları ve anlaşılabilir
     61 hâle getiren açıklayıcı yorumları silerek ve koddaki her anlamlı ismi keyfi
     62 bir kısa adla değiştirerek yapılır, böylece sonuçta ne anlama geldiğini
     63 anlayamayız.</p>
     64 
     65 <p><a href="/philosophy/free-sw.html">Özgür yazılımın</a> anlamının bir
     66 parçası, kullanıcıların programın kaynak koduna (planına)
     67 erişebilmeleridir. Bir programın kaynak kodu; yardımcı aralıklar, açıklayıcı
     68 yorumlar ve anlamlı adlar dahil olmak üzere programcıların değiştirmesi için
     69 tercih edilen biçim anlamına gelir. Sıkıştırılmış kod; kaynak kodu yerine
     70 sahte, işe yaramaz bir alternatiftir; bu programların gerçek kaynak kodu
     71 kullanıcılar tarafından kullanılamaz, bu yüzden kullanıcılar bunu anlayamaz;
     72 bu nedenle programlar özgür değildir.</p>
     73 
     74 <p>Özgür olmamaya ek olarak bu programların birçoğu <em>kötücül yazılımdır</em>
     75 çünkü <a
     76 href="https://github.com/w3c/fingerprinting-guidance/issues/8">kullanıcıyı
     77 gizlice gözetlerler</a>. Daha da kötüsü, bazı siteler, <a
     78 href="https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/">sayfaya
     79 bakan kullanıcının eylemlerini</a> kaydeden hizmetleri
     80 kullanırlar. Hizmetler, söylendiğine göre, web sitesinin almaması gereken
     81 bazı hassas verileri hariç tutmak için kayıtları &ldquo;yeniden
     82 düzenliyor&rdquo;. Ancak bu güvenilir bir şekilde çalışsa bile bu
     83 hizmetlerin tüm amacı web sitesine aslında erişmemesi gereken kişisel
     84 veriler vermektir.</p>
     85 
     86 <p>Tarayıcılar normalde JavaScript programlarını ne zaman yüklediklerini size
     87 söylemez. Bazı tarayıcılarda JavaScript'i tamamen devre dışı bırakmanın bir
     88 yolu vardır ancak bu sorunun farkında olsanız bile anlaşılması zor olan
     89 özgür olmayan programları tanımlamanız ve engellemeniz büyük zorluklar
     90 doğuracaktır. Bununla birlikte özgür yazılım topluluğunda bile çoğu
     91 kullanıcı bu sorunun farkında değildir; tarayıcıların sessizliği onu gizleme
     92 eğilimindedir.</p>
     93 
     94 <p>Açıklığa kavuşturmak gerekir ki, JavaScript dili, başka bir dile göre
     95 kendiliğinden kullanıcıların özglürlüğü açısından ne daha iyi ne de daha
     96 kötüdür. Kaynak kodunu özgür bir yazılım lisansı altında dağıtarak bir
     97 JavaScript programını özgür yazılım olarak yayımlamak mümkündür. Program
     98 kendi kendine yetiyorsa, eğer işleyişi ve amacı içeri girdiği sayfadan
     99 bağımsızsa, bu iyi; makinenizdeki bir dosyaya kopyalayabilir, değiştirebilir
    100 ve çalıştırmak için bir tarayıcıyla bu dosyayı ziyaret edebilirsiniz. Ancak
    101 bu alışılmadık bir durum.</p>
    102 
    103 <p>JavaScript tuzağı konusu, kullanıcıların ziyaret ettiği bir web sayfasıyla
    104 JavaScript programı indirildiğinde söz konusudur. Bu JavaScript programları
    105 belirli bir sayfa veya siteyle çalışma üzere yazılmıştır ve bu sayfanın veya
    106 sitenin çalışması onlara bağımlıdır.</p>
    107 
    108 <p>Varsayalım ki sayfanın JavaScript kodunu kopyaladınız ve değiştirdiniz. Bu
    109 durumda başka bir sorun ortaya çıkıyor: Programın kaynağı mevcut olsa bile
    110 tarayıcılar bu sayfayı veya siteyi ziyaret ederken değiştirilmiş sürümünüzü,
    111 özgün sürüm yerine çalıştırmak için bir yol sunmuyor. Prensipte üstesinden
    112 gelmek çok zor olmasa da etkisi tivoizasyon ile karşılaştırılabilir.</p>
    113 
    114 <p>JavaScript, web sitelerinin kullanıcıya gönderilen programlar için
    115 kullandığı tek dil değildir. Flash, JavaScript'in genişletilmiş bir varyantı
    116 aracılığıyla programlamayı destekler, ama bu artık geçmişte kaldı. Microsoft
    117 Silverlight'in Flash'a benzer bir sorun yaratması muhtemel görünüyor, belki
    118 de daha da kötüsü, çünkü Microsoft onu özgür olmayan kod çözücüler için bir
    119 platform olarak kullanıyor. Silverlight için özgür bir alternatif, normalde
    120 özgür alternatif kod çözücüleriyle birlikte gelmediği sürece, özgür dünyanın
    121 işine yaramaya yetmez.</p>
    122 
    123 <p>Java uygulamacıkları da tarayıcıda çalışır ve benzer sorunları ortaya
    124 çıkarır. Genel olarak herhangi bir uygulamacık sistemi bu tür bir sorun
    125 taşır. Bir uygulamacık için özgür bir yürütme ortamına sahip olmanın bize
    126 yararı ancak sorunla karşılaştırmak olur.</p>
    127 
    128 <p>Salt HTML ve CSS ile programlama teorik olarak mümkün olsa da, uygulamada bu
    129 yetenek sınırlıdır ve sakıncalıdır; sadece bir şeyi yapmak için etkileyici
    130 bir hack. Bu tür programlar özgür olmalı, fakat CSS 2019 itibareiyle
    131 kullanıcıların özgürlüğü için ciddi bir sorun değil.</p>
    132 
    133 <p>Web sitelerinin yalnızca özgür olan (bazıları &ldquo;açık&rdquo; diyor),
    134 yani belgelendirmeleri yayınlanan ve gerçekleştirimlerinin özgür olduğu
    135 biçimleri ve protokolleri aracılığıyla iletişim kurmasını isteyen güçlü bir
    136 hareket gelişti. Ancak web sayfalarındaki JavaScript programlarının varlığı
    137 bu ölçütü yetersiz kılmaktadır. JavaScript dilinin kendisi bir biçim olarak
    138 özgürdür ve bir web sitesinde JavaScript kullanımı mutlaka kötü olmak
    139 zorunda değildir. Ancak, yukarıda gördüğümüz gibi, JavaScript programı özgür
    140 değilse, kötü de olabilir. Site kullanıcıya bir program gönderdiğinde
    141 programın belgelenmiş ve engelsiz bir dilde yazılması yeterli değildir;
    142 yazılan bu program da özgür olmalı. &ldquo;Kullanıcıya yalnızca özgür
    143 programları ileten&rdquo; etik bir web sitesi için ölçütün bir parçası
    144 haline gelmelidir.</p>
    145 
    146 <p>Özgür olmayan programların sessizce yüklenmesi ve çalıştırılması, &ldquo;web
    147 uygulamalarının&rdquo; ortaya çıkardığı çeşitli sorunlardan sadece
    148 biridir. &ldquo;Web uygulaması&rdquo; terimi, kullanıcılara sunulan yazılım
    149 ile sunucu üzerinde çalışan yazılımlar arasındaki temel ayrımı göz ardı
    150 etmek için tasarlanmıştır. Tarayıcıda çalışan özelleşmiş bir istemci
    151 programı kastediliyor olabilir; özelleşmiş sunucu yazılımı kastediliyor
    152 olabilir; özelleşmiş sunucu yazılımı ile birlikte çalışan özelleşmiş bir
    153 istemci programı kastediliyor olabilir. İstemci ve sunucu tarafları; farklı
    154 bir etik sorun ortaya çıkarmaktadır, sıkı bir şekilde entegre olmuş olsalar
    155 bile tartışmasız tek bir programın bölümlerini oluştururlar. Bu makale
    156 yalnızca istemci tarafındaki yazılım sorununu ele almaktadır. Sunucu
    157 sorununu ayrıca ele alıyoruz.</p>
    158 
    159 <p>Pratik açıdan web sitelerinde anlaşılması zor olan özgür olmayan JavaScript
    160 programları sorununu nasıl çözebiliriz? İlk adım, onu çalıştırmaktan
    161 kaçınmaktır.</p>
    162 
    163 <p>&ldquo;Anlaşılması zor olan&ldquo; derken neyi kastediyoruz? Bu bir seviye
    164 meselesidir, bu yüzden doğru bir cevap bulmak yerine iyi sonuçlar veren
    165 basit bir ölçüt tasarlama meselesidir.</p>
    166 <p>
    167 Şu anki ölçütümüz, aşağıdaki koşullardan herhangi birini içeren bir
    168 JavaScript programını anlaşılması zor bir program olarak değerlendirmektir:</p>
    169 
    170 <ul>
    171   <li>harici bir komut dosyası olarak adlandırılır (başka bir sayfadan).</li>
    172 
    173   <li>50'den fazla eleman uzunluğunda bir dizi tanımlar.</li>
    174 
    175   <li>ilkel bir tipten başka bir şey çağıran adlandırılmış bir varlık (fonksiyon
    176 veya metot) tanımlar.</li>
    177 
    178   <li>üçten fazla koşullu yapı ve döngü yapısı içeren adlandırılmış bir varlık
    179 tanımlar.</li>
    180 
    181   <li>adlandırılmış tanımların dışındaki kod; sayfada daha fazla tanımlanan
    182 ilkellerden ve fonksiyonlardan başka bir şey çağırır.</li>
    183 
    184   <li>adlandırılmış tanımların dışındaki kod; toplamda üçten fazla koşullu yapı ve
    185 döngü yapısı içerir.</li>
    186 
    187   <li><b>eval</b> kullanır.</li>
    188 
    189   <li>Ajax çağrıları yapar.</li>
    190 
    191   <li><b><em>nesne</em>[<em>özellik</em>]</b> gibi, dinamik nesne özelliği erişimi
    192 için köşeli parantez gösterimini kullanır.</li>
    193 
    194   <li>DOM'u değiştirir.</li>
    195   
    196   <li>programı yorumlamadan analiz etmesi zor olan ya da bu tür yapıları kullanan
    197 betiklerle yüklü dinamik JavaScript yapılarını kullanır. Özellikle, bir
    198 karakter dizisinden başka bir yapıyı belirli metotlarla kullanma
    199 (<b>Obj.write</b>, <b>Obj.createElement</b> ve diğerleri).</li>
    200 </ul>
    201 
    202 <p>JavaScript kodunun özgür olup olmadığını nasıl anlarız? <a
    203 href="/licenses/javascript-labels.html">Ayrı bir makalede</a> bir web
    204 sayfasındaki anlaşılması zor olan bir JavaScript programının kaynak kodunun
    205 bulunduğu URL'yi ve biçimlendirilmiş yorumları kullanarak lisansını
    206 belirtebileceği bir yöntem öneriyoruz.</p>
    207 
    208 <p>Son olarak web sayfalarındaki anlaşılması zor olan özgür olmayan
    209 JavaScript'i tespit etmek ve engellemek için özgür tarayıcıları
    210 değiştirmemiz gerekiyor. <a href="/software/librejs/">LibreJS</a> programı;
    211 ziyaret ettiğiniz sayfalarda özgür olmayan, anlaşılması zor olan bir
    212 JavaScript'i tespit eder ve engeller. LibreJS, IceCat'a dâhil edilmiştir ve
    213 Firefox için bir eklenti olarak mevcuttur.</p>
    214 
    215 <p>Tarayıcı kullanıcılarının ayrıca belirli bir sayfada JavaScript
    216 <em>yerine</em> kullanılacak JavaScript kodunu belirtmek için uygun bir
    217 vasıtaya ihtiyacı vardır. (Belirtilen kod, bu sayfadaki özgür JavaScript
    218 programının tamamen değiştirilmesi veya değiştirilmiş bir sürümü olabilir.)
    219 Greasemonkey, bunu yapmaya en yakın eklentidir, ancak tam olarak bunu
    220 yapamaz, çünkü bu program çalıştırılmadan önce bir sayfadaki JavaScript
    221 kodunu değiştirmeyi garanti etmez. Yerel bir vekil sunucu kullanmak işe
    222 yarar ancak bu da gerçek bir çözüm olmak için çok zahmetli. Güvenilir ve
    223 uygun bir çözüm ve değişiklikleri paylaşmak için siteler oluşturmak
    224 gerekir. GNU Projesi sadece özgür değişikliklere adanmış siteleri önermek
    225 ister.</p>
    226 
    227 <p>Bu özellikler, bir web sayfasına dâhil olan bir JavaScript programının
    228 gerçek ve pratik anlamda özgür olmasını mümkün kılacaktır. JavaScript artık
    229 özgürlüğümüz için belirgin bir engel teşkil etmeyecek, şimdi C ve Java'nın
    230 olduğundan daha fazla değil en azından. Kurulum için teklif edilen özgür
    231 olmayan paketleri reddettiğimiz gibi, özgür olmayan, anlaşılması zor olan
    232 JavaScript programlarını reddebilecek ve hatta değiştirebileceğiz. Böylece
    233 web sitelerinin Javascript'lerini özgürleştirme kampanyamız da başlayabilir.</p>
    234 
    235 <p>Bu arada özgür olmayan bir JavaScript programını çalıştırmanın kabul
    236 edilebilir olduğu bir durum var: Web sitesi operatörlerine sitedeki
    237 JavaScript kodunu özgürleştirmeleri veya kaldırmaları gerektiğini söyleyen
    238 bir şikayet göndermek. Lütfen bunu yapmak için geçici olarak JavaScript'i
    239 etkinleştirmekten çekinmeyin, ancak elbette daha sonra tekrar devre dışı
    240 bırakmayı unutmayın.</p>
    241 
    242 <!-- any links that used to point to the appendices should point to
    243      free-your-javascript.html instead.  -->
    244 <div class="announcement">
    245 <hr class="no-display" />
    246 <p>Web yöneticileri: Bir web sitesindeki JavaScript programlarının lisansını
    247 belirtmenin <a href="/software/librejs/free-your-javascript.html">birkaç
    248 yolu</a> vardır.</p>
    249 <hr class="no-display" />
    250 </div>
    251 
    252 <p><strong>Teşekkürler:</strong> <a href="/people/people.html#mattlee">Matt
    253 Lee</a> ve <a href="https://johnresig.org">John Resig</a>'e önerdiğimiz
    254 ölçütleri tanımlamamıza yardım ettikleri için ve hususu dikkatime sunduğu
    255 için David Parunakian'a teşekkür ediyorum.</p>
    256 </div>
    257 
    258 <div class="translators-notes">
    259 
    260 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
    261  </div>
    262 </div>
    263 
    264 <!-- for id="content", starts in the include above -->
    265 <!--#include virtual="/server/footer.tr.html" -->
    266 <div id="footer" role="contentinfo">
    267 <div class="unprintable">
    268 
    269 <p>Lütfen FSF ve GNU ile ilgili sorularınızı <a
    270 href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a> adresine iletin. FSF ile
    271 iletişim kurmanın <a href="/contact/">başka yolları</a> da vardır. Lütfen
    272 çalışmayan bağlantıları ve başka düzeltmeleri veya önerilerinizi <a
    273 href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a> adresine
    274 gönderin.</p>
    275 
    276 <p>
    277 <!-- TRANSLATORS: Ignore the original text in this paragraph,
    278         replace it with the translation of these two:
    279 
    280         We work hard and do our best to provide accurate, good quality
    281         translations.  However, we are not exempt from imperfection.
    282         Please send your comments and general suggestions in this regard
    283         to <a href="mailto:web-translators@gnu.org">
    284 
    285         &lt;web-translators@gnu.org&gt;</a>.</p>
    286 
    287         <p>For information on coordinating and contributing translations of
    288         our web pages, see <a
    289         href="/server/standards/README.translations.html">Translations
    290         README</a>. -->
    291 Çevirilerimizde bulmuş olabileceğiniz hataları, aklınızdaki soru ve
    292 önerilerinizi lütfen <a
    293 href="mailto:web-translators@gnu.org">bize&nbsp;bildirin</a>.</p><p>Bu
    294 yazının çeviri düzenlemesi ve sunuşu ile ilgili bilgi için lütfen <a
    295 href="/server/standards/README.translations.html">Çeviriler BENİOKU</a>
    296 sayfasına bakın. Bu sayfanın ve diğer tüm sayfaların Türkçe çevirileri
    297 gönüllüler tarafından yapılmaktadır; Türkçe niteliği yüksek bir <a
    298 href="/home.html">www.gnu.org</a> için bize yardımcı olmak istiyorsanız, <a
    299 href="https://savannah.gnu.org/projects/www-tr">çalışma&nbsp;sayfamızı</a>
    300 ziyaret edebilirsiniz.</p>
    301 </div>
    302 
    303 <!-- Regarding copyright, in general, standalone pages (as opposed to
    304      files generated as part of manuals) on the GNU web server should
    305      be under CC BY-ND 4.0.  Please do NOT change or remove this
    306      without talking with the webmasters or licensing team first.
    307      Please make sure the copyright date is consistent with the
    308      document.  For web pages, it is ok to list just the latest year the
    309      document was modified, or published.
    310      
    311      If you wish to list earlier years, that is ok too.
    312      Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
    313      years, as long as each year in the range is in fact a copyrightable
    314      year, i.e., a year in which the document was published (including
    315      being publicly visible on the web or in a revision control system).
    316      
    317      There is more detail about copyright years in the GNU Maintainers
    318      Information document, www.gnu.org/prep/maintain. -->
    319 <p>Copyright &copy; 2009-2013, 2016-2019, 2021 Richard Stallman</p>
    320 
    321 <p>Bu sayfa <a rel="license"
    322 href="http://creativecommons.org/licenses/by-nd/4.0/deed.tr">Creative
    323 Commons Alıntı-Türetilemez 4.0 Uluslararası Lisansı</a> altında
    324 lisanslanmıştır.</p>
    325 
    326 <!--#include virtual="/server/bottom-notes.tr.html" -->
    327 <div class="translators-credits">
    328 
    329 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
    330 <p><strong>Çeviriye katkıda bulunanlar:</strong></p>
    331 <ul>
    332 <li>The FLOSS Information <a
    333 href="mailto:theflossinformation@gmail.com">&lt;theflossinformation@gmail.com&gt;</a>,
    334 2019, 2020.</li>
    335 
    336 </ul></div>
    337 
    338 <p class="unprintable"><!-- timestamp start -->
    339 Son Güncelleme:
    340 
    341 $Date: 2021/10/14 20:02:37 $
    342 
    343 <!-- timestamp end -->
    344 </p>
    345 </div>
    346 </div>
    347 <!-- for class="inner", starts in the banner include -->
    348 </body>
    349 </html>