Elementy graficzne ruchome -> __JS__ czy __PHP + JS__ czy co innego?

0

Dzień dobry.

Piszę portal matematyczny. Jestem na etapie projektowania szablonu podstrony danego tematu dla SP I-III, a w zasadzie nie tyle podstrony co zasobnika elementów, które będę mógł na tej podstronie użyć. Póki co stworzyłem sobie na kartce listę tych widgetów. Są to np. (nie tylko dla SP)

  • widgety
    ) obrazki
    ) szlaczki
    ) grafy

    ) wykresy 1D (osie)
    ) wykresy 2D (płaszczyzny) [funkcje + kształty (figury)]
    ) wykresy 3D (powierzchnie) [funkcje + kształty (figury)]

    ) zegary
    ) objętości
    ) wagi
    ) temperatury
    ) pieniądze

Wszystkie te elementy da się napisać w JS po stronie klienta, jednak wtedy istnieje ryzyko, że ktoś mi podwędzi pomysł i ukradnie a potem umieści u siebie. Dlatego myślałem, żeby dynamicznie generować skrypt JS przez PHP, który doda mnóstwo nic nierobiących śmieci, co uprzykrzy życie cwaniakowi co będzie chciał mi zwędzić kod.

Ale z drugiej strony to i tak nic nie da, po suma sumarum i tak będę musiał umieścić to w kodzie strony. Co zatem zrobić?

Dzięki
M.

6

Pogodzić się z myślą, że nikomu pewnie nie będzie chciało się tego kraść i spać spokojnie.

0
mpaw napisał(a):

Dlatego myślałem, żeby dynamicznie generować skrypt JS przez PHP, który doda mnóstwo nic nierobiących śmieci, co uprzykrzy życie cwaniakowi co będzie chciał mi zwędzić kod.

Czyli zamiast ładnego, małego JSa chcesz generować dużego i brzydkiego? Ma sens. A czas ściągania JSa i wykonywania go - kogo to obchodzi. Jak ktoś ma wolny internet to niech idzie umrzeć a nie korzysta z JSa/s

0
KamilAdam napisał(a):

Czyli zamiast ładnego, małego JSa chcesz generować dużego i brzydkiego? Ma sens. A czas ściągania JSa i wykonywania go - kogo to obchodzi. Jak ktoś ma wolny internet to niech idzie umrzeć a nie korzysta z JSa/s

Jak dodam 1000 znaków to to będzie tylko 1 KB. Nawet jak w artykule będzie 10 takich instancji widgetów, to daje 10 KB. Rozumiem, że to nie do przełknięcia, jeżeli mój hosting nie ma limitu transferu :D

1
mpaw napisał(a):

Jak dodam 1000 znaków to to będzie tylko 1 KB.

Co to jest 1000 znaków - może 10 - 30 linii kodu. Każdy dobry programista to bez problemu to wytnie

Rozumiem, że to nie do przełknięcia, jeżeli mój hosting nie ma limitu transferu :D

Myślisz o sobie a nie o klientach/użytkownikach łączących się z internetu mobilnego

4

Może po prostu zminifikuj ten JS?

A tak serio, ja bym był w stanie dużo kasy komuś zapłacić żeby nie musieć korzystać z Twojego rozwiązania, a co dopiero wkładać wysiłek żeby go kraść.

Nawet gdybyś miał jakiś turbo zajebisty pomysł, prawdopodobnie nie napiszesz go jak biblioteki, żeby dało się jej użyć, tylko będzie przywiązany do Twojej strony tak mocno że nie będzie się praktycznie dało się go użyć nigdzie indziej.

Innymi słowy - ściągnij minifikator i zajmij się czymś pożytecznym.

2

Weź pod uwagę, że jeśli Twoja strona będzie serwować śmieci to sama będzie śmieciem.

Nota bene, często swoje rozwiązania starają się chronić ludzie, którzy nie mają czego chronić, a ci co mają to udostępniają rzeczy jako OS, bo platformy same się bronią.

3
mpaw napisał(a):

może masz rację, ale uważam, że jak ktoś wejdzie nawet 100x na stronę w ciągu miesiąca i pobierze łącznie 1MB więcej to chyba korona mu nie spadnie ;)

Nie chodzi o to czy to dużo czy mało, tylko żeby nie podejmować głupich decyzji. Dodawanie kodu który nic nie robi, po to żeby utrudnić komuś użycie Twojego kodu to głupia decyzja. Nie jesteś pierwszą osobą która chce chronić swój kod (nie jesteś też pierwszą która chce go chronić, mimo że nie ma nic do ochrony i nic wartego ukradnięcia), więc istnieje już MASA rozwiązań.

Wyszukaj w Google "js obsfuscate" oraz "js minify".

A tak serio, @mpaw to pomysły w IT mają wartość raczej niską. Liczą się dobre wykonanie, community, narzędzia, ekosystemy, dyscyplina, porządność wykonania. Samego "pomysłu" raczej nikt nie ukradnie, bo on i tak sam w sobie niczym nie jest. A jeśli ktoś ma na tyle skilli żeby go zrealizować to na 99% ma 100 własnych pomysłów.

0

Ja kiedyś spotkałem się z takim czymś, że cały kod po stronie JS został zminifikowany, później zakodowany w base64 i czymś tam jeszcze i uruchamiany przez podobny zapis do tego eval(decode64('YWxlcnQlMjglMjJ0ZXN0JTIyJTI5JTNC')); :D

EDIT: Moim zadaniem jedynie było to odkodować, żeby nikt nie pomyślał, że chciałem tak coś zabezpieczyć.

0
Xarviel napisał(a):

Ja kiedyś spotkałem się z takim czymś, że cały kod po stronie JS został zminifikowany, później zakodowany w base64 i czymś tam jeszcze i uruchamiany przez podobny zapis do tego eval(decode64('YWxlcnQlMjglMjJ0ZXN0JTIyJTI5JTNC')); :D

No, taka akcja nie ma sensu, bo zminifikowany JS już jest w ASCII tak czy tak, więc Base64 nie ma sensu. A w bezpieczeństwie pomoże to nijak.

1

https://github.com/javascript-obfuscator/javascript-obfuscator
Wrzucasz jako dodatek do webpacka. Ma nawet funkcję o której myślałeś czyli 'dead code injection'.
Tutaj online example: https://obfuscator.io/
Musisz tylko budować projekt webpackiem. Tam też masz Terser który sam z siebie umie zrobić mangle.

Twój kod będzie wyglądał +/- tak:

0

Ja zrobiłmym dane w HTMLowych tabelach, a w summary dałbym te dane w zakodowanej wersji, i potem skrypt przeglądarki, o ile się wykona i obsługiwany będzie canvas, narysuje wykres a ukryje tabelę.

0
mpaw napisał(a):

Dzień dobry.

Piszę portal matematyczny. Jestem na etapie projektowania szablonu podstrony danego tematu dla SP I-III, a w zasadzie nie tyle podstrony co zasobnika elementów, które będę mógł na tej podstronie użyć. Póki co stworzyłem sobie na kartce listę tych widgetów. Są to np. (nie tylko dla SP)

  • widgety
    ) obrazki
    ) szlaczki
    ) grafy

    ) wykresy 1D (osie)
    ) wykresy 2D (płaszczyzny) [funkcje + kształty (figury)]
    ) wykresy 3D (powierzchnie) [funkcje + kształty (figury)]

    ) zegary
    ) objętości
    ) wagi
    ) temperatury
    ) pieniądze

Nie wiem, co chcesz dokładnie zrobić, ale raczej wątpię, żebyś wpadł na coś, na co kto inny nie wpadł już dawno temu.

W szczególności, to cokolwiek chcesz zrobić z tymi wykresami, wagami, temperaturami, to w WolframAlpha pewnie się tak da od dawna, więc po co kozaczyć? (WolframAlpha to taki uniwersalny kalkulator, gdzie wpisujesz równanie i ci rozwiązuje i pokazuje wykres, można coś przeliczyć itp. Czasem Google się zachowuje w podobny sposób, np. wpiszesz równanie w google, to też pokaże wykres https://www.google.com/search?q=2x%5E2 , przeliczy waluty itp.)

Inne produkty, które potencjalnie mogą być zbliżone do tego co chcesz zrobić, to Brilliant (takie wizualne kursy dla dziedzin ścisłych).

No i masz wreszcie notatniki programistyczne Jupyter czy ObservableHQ, gdzie też masz wykresy i różne widżety.

No chyba, że robisz jednak coś zupełnie innego, ale po opisie (widgety, obrazki, szlaczki, grafy, wykresy, zegary, objętości, wagi, temperatury, pieniądze) wnioskuję, że chcesz zrobić coś podobnego, ale zawierające z niewielki ułamek funkcjonalności, ale jednak uważasz, że jesteś pierwszy i nikt czegoś podobnego nie zrobił.

ktoś mi podwędzi pomysł i ukradnie a potem umieści u siebie.

Poczekaj. Nie mieszajmy dwóch rzeczy.

Same pomysły nie są chronione prawem autorskim.

Natomiast jeśli ktoś faktycznie skopiuje kod z twojej strony i umieści u siebie, to już będzie to złamanie praw autorskich i będziesz mógł dochodzić swoich praw.

1 użytkowników online, w tym zalogowanych: 0, gości: 1