{"id":337,"date":"2013-05-15T17:30:22","date_gmt":"2013-05-15T15:30:22","guid":{"rendered":"http:\/\/blog.systemconnect.dk\/?p=337"},"modified":"2014-01-31T08:03:04","modified_gmt":"2014-01-31T07:03:04","slug":"den-hemmelige-kilde","status":"publish","type":"post","link":"https:\/\/scblog.lynge.org\/?p=337","title":{"rendered":"Den hemmelige kilde&#8230;"},"content":{"rendered":"<p>Selv om C5 har mulighed for at skjule din kildekode, s\u00e5 er funktionaliteten ikke s\u00e6rligt godt beskrevet i hverken hj\u00e6lpen eller andre steder. Det r\u00e5der dette indl\u00e6g bod p\u00e5.<\/p>\n<p>C5 frem til og med version 2008 (og i \u00f8vrigt vistnok ogs\u00e5 alle XAL-versioner)\u00a0havde mulighed for at man som udvikler kunne eksportere og importere krypterede elementer (kildekode). Ved import fik importerede elementer automatisk fjernet deres kildekode (med mindre man importerede med korrekt n\u00f8gle), s\u00e5ledes at andre ikke kunne rette i dem &#8211; kun afvikle dem.<\/p>\n<p>Som C5 hus eller udvikler er det jo faktisk en m\u00e5de at beskytte sin kildekode &#8211; p\u00e5 den anden side set l\u00e5ser det kunden fast til en C5 leverand\u00f8r, idet han\/hun jo er den eneste der kan rette og dermed opdatere p\u00e5g\u00e6ldende element. I sagens natur kan elementet heller ikke genovers\u00e6ttes\u00a0&#8211; kun afvikles.<\/p>\n<p>Personligt mener jeg at det er useri\u00f8st at beskytte sin kode p\u00e5 den m\u00e5de. I Danmark har vi en udm\u00e6rket oprethavs lovgivning der i forvejen beskytter dig\u00a0&#8211; s\u00e5 brug dog den til at forf\u00f8lge pirateri og lad v\u00e6re med at &#8220;chikanere&#8221; dine kunder med kopibeskyttelse som helt sikkert vil genere dem senere (fx n\u00e5r en anden C5 partner skal opgradere dem &#8211; eller de blot \u00f8nsker at genovers\u00e6tte hele deres applikation).<\/p>\n<p>Eksport af krypterede elementer frem til og med version 2008 var rimeligt let &#8211; man tastede blot en krypteringskey i Crypt-feltet i en multi-eksport &#8211; eller valgte Crypt eksport direkte fra gittermenuen n\u00e5r man manuelt eksporterede hver enkelt element.<\/p>\n<p>Import med angivelse af key var ikke umiddelbart supporteret af applikationen, men man kunne naturligvis kalde import af elementet manuelt og s\u00e5 angive den korrekte key med CRYPT-parameteren.<\/p>\n<p>Begrundelsen for at fjerne krypteringsfunktionaliteten (der er nemlig\u00a0fjernet mere krypteringsfunktionalitet til dette), er at krypteringen var for svag. Med moderne computere var den for let at kn\u00e6kke og levede\u00a0derfor ikke op til Microsofts standarder for kryptering.<\/p>\n<p>F\u00f8lgende elementer kunne eksporteres og importeres krypteret: Frm, Rep, Xal, Qtx, Uxl og\u00a0Fnc.<\/p>\n<p>&nbsp;<\/p>\n<p>Men hvad s\u00e5 de nyere C5&#8217;ere?<br \/>\nJa, faktisk har man stadig mulighed for at importere skjult kildekode&#8230; Det er bare ikke l\u00e6ngere noget man definere under eksport. En lille rest af tilsvarende funktionalitet har overlevet: i forbindelse med import er det muligt at angive NOSOURCE som parameter &#8211; og dermed f\u00e5 fjernet kildekoden fra C5. Dermed gemmes kun den oversatte mellemkode som jo s\u00e5 kan afvikles, men ikke rettes og genovers\u00e6ttes.<\/p>\n<p>Muligheden er i \u00f8vrigt ikke ny &#8211; den findes skam ogs\u00e5 i de \u00e6ldre C5&#8217;ere&#8230;<\/p>\n<p>NOSOURCE er i \u00f8vrigt styret af variablen &amp;Source i XAL-k\u00f8rslen ImportObjects, hvorfor det blot handler om at s\u00e6tte den til 0 (i stedet for 1, som er standard), hvis du \u00f8nsker at k\u00f8re en multi-import hvor kildekoden\u00a0alle elementer efter overs\u00e6ttelsen bliver fjernet fra C5 (i praksis gemmes kildekoden sammen med den oversatte mellemkode i c5util.* filerne).<\/p>\n<p>F\u00f8lgende elementer kan f\u00e5 fjernet deres source under import: Frm, Rep, Xal, Qtx, Uxl, Fnc, Mnu og Trg.<\/p>\n<p>Afslutningsvis vil jeg gerne gentage min opfordring til IKKE at benytte denne funktionalitet. Ingen kender fremtiden og det er temmelig uheldigt at stavnsbinde kunder til en specifik C5 leverand\u00f8r p\u00e5 denne m\u00e5de. Beskyt dine rettigheder med den der til indrettede lovgivning i stedet&#8230; Folk der vil kopiere, skal nok lykkes med at g\u00f8re det alligevel &#8211; og der er jo absolut ingen grund til at chikanere de kunder der rent faktisk HAR betalt!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Selv om C5 har mulighed for at skjule din kildekode, s\u00e5 er funktionaliteten ikke s\u00e6rligt godt beskrevet i hverken hj\u00e6lpen eller andre steder. Det r\u00e5der dette indl\u00e6g bod p\u00e5. C5 frem til og med version 2008 (og i \u00f8vrigt vistnok &hellip; <a href=\"https:\/\/scblog.lynge.org\/?p=337\">L\u00e6s resten <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[37,6,4],"tags":[15,43,13,11,23,53,14,20,7,24],"class_list":["post-337","post","type-post","status-publish","format-standard","hentry","category-klassisk-c5","category-klassisk-c5-support","category-klassisk-c5-teknik","tag-business-solutions","tag-c5","tag-damgaard-data","tag-dynamics","tag-hint","tag-klassisk-c5","tag-microsoft","tag-udokumenteret","tag-versioner","tag-xal"],"_links":{"self":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=337"}],"version-history":[{"count":6,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/337\/revisions"}],"predecessor-version":[{"id":415,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/337\/revisions\/415"}],"wp:attachment":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}