Mit válasszak? C vs. PHP

Mit válasszak? C vs. PHP

Hozzászólások

Miccolnal peldaul a Java/JSP-hez?
C-nel nagysagrendkkel gyorsabban lehet fejleszteni (imho meg akkor is ha raszansz nehany hetet-honapot a Java megtanulasara), nem adod ki a forrast csak a bytekodot, php-nel terhelhetobb, etc etc.

Ja, es bitangjo vizualis fejlesztoeszkozok vannak hozza (NetBeans, JBuilder, JDeveloper, etc.)

én mindenképpen phpban írnám...
tudja a root jelszót a renszeren? mert akkor csak annyi, hogy olyan felhasználó tulajdonába adod a forrást, amibe ő is beletartozik, és akkor adsz rá 604es jogot, így webről elérhető, de a forrást nem tudja megnézni :D

[quote:e25143b9e9="BOB"]Miccolnal peldaul a Java/JSP-hez?
C-nel nagysagrendkkel gyorsabban lehet fejleszteni (imho meg akkor is ha raszansz nehany hetet-honapot a Java megtanulasara), nem adod ki a forrast csak a bytekodot, php-nel terhelhetobb, etc etc.

...es a bytekodot pedig szepen visszafejtik, es maris ertelmetlen volt az egesz. teny, hogy leteznek obfuscatorok, amikkel szejjel lehet kodolni a stuffot, viszont nem minden helyre celszeru servletfuttato kornyezetet rakni - jsp miatt viszont ugyebar kell.
en php-t javasolnam mindenkepp (barmennyire is gyulolom), de csak valami normalis koderrel (nem olyannal, amibol 10 perc alatt ki lehet szedni a hardkodolt kulcsot). persze meg ezt is lehet hekkelni (apacsot-php-t megturni, futasidoben kidumpolni a php forrast), de nem biztos, hogy megeri, es szerveroldalon kisebb nyug, mintha egy servletfuttatot kene rakni. sok teruleten viszont a java a nyero, ez tagadhatatlan, ekkor viszont szamolni kell az emlitett dolgokkal.

[quote:c87a1b3e12="netchan"]... de a 'tipikus' webes alkalmazasoknal a C nem rug labdaba, ha a fejlesztesi idot, karbantarthatosagot nezzuk....

Esetleg, ha valami template rendszert használsz (sajátot írni sem nagy dolog, főleg egy projekttel együtt) és az 'érdemi' részek binary CGI-ban futnak, a HTML oldalak meg külön szerkeszthetők hozzá. Kérdés persze, - amit nem tudunk a projektedről - hogy melyik részét félted? A felületet, vagy a 'motorját'. Gondolom inkább az utóbbit.

A PHP is bytecode-ra forditja. A PHP kodolok annyit csinalnak, hogy ezt a bytecode-t csak bizonyos feltetelek teljesitese eseten "toltik" be. (IP cim, jelszo, stb)

A deobfuscation (visszafejtes) egyebkent NP teljes problema, nem valoszinu, hogy hamar vissza fogja fejteni:
http://www.cs.princeton.edu/~appel/papers/deobfus.pdf

BTW: A bytecode visszafejtese kicsit mas teszta: nem feltetlen lehetetlen,
de nehez dio, es aligha fog tul sok hasznalhato kodot kapni belole.
Azert kivancsi lennek a bytecode + obfuscation kombinalva mennyi bugot visz az eredetileg "jo" forrasba:)

handler

[quote:d928ca161a="Anonymous"]A PHP is bytecode-ra forditja. A PHP kodolok annyit csinalnak, hogy ezt a bytecode-t csak bizonyos feltetelek teljesitese eseten "toltik" be. (IP cim, jelszo, stb)

:?:
lehet, hogy az interpreter bytecode-ot csinal belole, de a user akkor is hozzafer a forrashoz... ez az alapveto problema. az altalam latott php kodolok ugy mukodnek, hogy egy kodoloval elkodolod a scriptet, mig a dekoder egy php modul, ami a zend motor "elott" dekodolja az elkodolt anyagot es ezt adja at futtatasra. az egyszerubb megoldasok hardkodolt kulcsot alkalmaznak (azaz a php modul maga is tartalmazza a kulcsot). en is irtam egy hasonlo dolgot, de az joval bonyolultabb volt, "dinamikus" (azaz nem elore letarolt) kulcsokkal es "licensz" file-al. persze a kulcsgeneralo algoritmus ismereteben ez is torheto, de a kodolo eseten azert viszonylag egyszeruen megoldhato ennek az elrejtese, azaz a megfejtes jelentos modon valo megnehezitese (foleg, ha nincs is kiadva a kodolo, de ez nyilvan csak sajat - nem nyilvanos hasznalatra szant - cuccok eseteben jarhato ut), a php modulon meg lehet trukkozni, meg azert ott a debuggolas se tul egyszeru.

Perl + perlcc? :)

Bytecode eseten a bytecode-hoz fer hozza es nem a forrasokhoz! A ketto nem egy es ugyanaz! A fordito szepen kimazsolazza belole a nem hasznalt kodreszleteket, tipusinformaciokat, etc.
pl: Java eseten egesz hasznalhato modon vissza lehet fejteni a bytecode-t, DE ha egy obfuscator is latta a forrasokat, akkor mar remenytelen.

A C forrasokat egyebkent egesz erdekes formara is lehet alakitani:
http://personal.sip.fi/~lm/c2txt2c/

handler

[quote:f717b92d31="Anonymous"]Bytecode eseten a bytecode-hoz fer hozza es nem a forrasokhoz! A ketto nem egy es ugyanaz! A fordito szepen kimazsolazza belole a nem hasznalt kodreszleteket, tipusinformaciokat, etc.

tisztaban vagyok a source code es a byte code kozotti kulonbsegekkel.
a fordito honnan mazsolaz ki barmit is? a bytekodbol?

feljebb ezt irtad: "A PHP is bytecode-ra forditja. A PHP kodolok annyit csinalnak, hogy ezt a bytecode-t csak bizonyos feltetelek teljesitese eseten "toltik" be. (IP cim, jelszo, stb)"
hol a php byte code? "honnan" lesz a byte code? a user alapesetben plain text kodot lat, bytekodot max. akkor, ha valamilyen kodolot hasznal, amirol mar beszelunk egy ideje.
alapesetben azonban a kod plain text, kezdettol fogva errol van szo...

[quote:f717b92d31="Anonymous"]
pl: Java eseten egesz hasznalhato modon vissza lehet fejteni a bytecode-t, DE ha egy obfuscator is latta a forrasokat, akkor mar remenytelen.

ha visszaolvasod, en is pont a "sima" java bytecode visszafejthetosegere hivtam fel a figyelmet...

Végülis C-ben is le lehet programozni amit PHP-ban. Valóban egyszerűbb és gyorsabb lehet PHP-ben a végére érni, de
- azért a C nem olyan "tákolmány" nyelv, mint a PHP: nem fenyeget az, hogy következő verziójú értelmező ugyanazt csak éppen annyival értelmezi másképp, hogy működjön, de persze "kicsit" másképp.
- tisztességesebb kódot kell írni (ezt persze lehet PHP-ban is, de igen könnyen bennemaradhatnak szemantikai hibák, amit a fordító nem dob ki és szív az ember mint torkosborz.)
- a kedvencem a PHP igaz-hamis értelmezése különböző adattípusok és összahasonlítási módok mellett. :lol:
- nem függ az ember léte egy valamennyire működő értelmezőtől. Ha modul, akkor nem annyira biztonságos, ha cgi, akkor meg be kell tölteni az értelmezőt. C esetén már a betöltés is gyorsabb lehet, nemhogy a futás.

Szóval lehet, hogy én maradi vagyok, de én inkább C-ben írnám meg. Szvsz több idő mehet el a PHP-ban a szívásokkal, mint a C-ben időnként feltalálni a meleg vizet és körbefutni egy problémával a földet kétszer keresztben.

a php azt csinalja, hogy beszippantja a source-t, bytekodot fordit és futtatja. nezd meg a free php acceleratort (állítolag jo smarty-ban), ott ir a szerzo egy par dolgot a source+bytekod kapcsolatarol. /a gyorsito annyit csinal, hogy megorzi a bytekodot es ha nem valtozik a text, akkor atugratja a forditasi fazist. ~5-10-szeres gyorsulas, bonyolult source eseten tobb is lehet/

[quote:84a67e8019="pete"]a php azt csinalja, hogy beszippantja a source-t, bytekodot fordit és futtatja. nezd meg a free php acceleratort (állítolag jo smarty-ban), ott ir a szerzo egy par dolgot a source+bytekod kapcsolatarol. /a gyorsito annyit csinal, hogy megorzi a bytekodot es ha nem valtozik a text, akkor atugratja a forditasi fazist. ~5-10-szeres gyorsulas, bonyolult source eseten tobb is lehet/

lehet, hogy elbeszeltunk egymas mellett: ha azt mondjatok, hogy a php altal forditott bytecode-ot ki lehet nyerni, es azt kiadni, akkor rendben, az mar valoban biztonsagos, es nyilvan gyorsabb is, hiszen nem kell elotte dekodolni az forrast, majd abbol generalni a bytecode-ot es azt futtatni. bevallom, felreertettem handlert (nem volt egyertelmu, amit irt, legalabbis szamomra). :oops:

A php a forrast forditja at bytecode-ra, aztan azt JIT-elve probalja meg futtatni. Ha ezt a lepest nem a php-ra bizod, hanem elore "leforditod", es
azt hasznalod fel (a php gyorsitok/kodolok ugyanezt csinaljak) akkor nem kell a forrast kiadnod. Innen jon a php bytecode. Hint: bcompiler

A "sima" java bytecode viszonylag jol visszafejltheto, mert nagyon sok kotottseget tartalmaz mag a specifikacio es emellett rengeteg informaciot
is tartalmaz, de ez nem jelenti azt, hogy minden mas bytecode is ugyanilyen jol visszafejtheto...

handler

[quote:9e91f9613c="Anonymous"]
A "sima" java bytecode viszonylag jol visszafejltheto, mert nagyon sok kotottseget tartalmaz mag a specifikacio es emellett rengeteg informaciot
is tartalmaz, de ez nem jelenti azt, hogy minden mas bytecode is ugyanilyen jol visszafejtheto...

handler

man perlfaq3 szerint:

How can I hide the source for my Perl program?

Delete it. :-) Seriously, there are a number of (mostly unsatisfactory) solutions
with varying levels of ``security''.

[...]

If you're concerned about people profiting from your code, then the bottom line is
that nothing but a restrictive license will give you legal security. License your
software and pepper it with threatening statements like ``This is unpublished pro­
prietary software of XYZ Corp. Your access to it does not give you permission to
use it blah blah blah.'' We are not lawyers, of course, so you should see a lawyer
if you want to be sure your license's wording will stand up in court.

[quote:9468e24a34="zsirfeka"]...es a bytekodot pedig szepen visszafejtik, es maris ertelmetlen volt az egesz

Ennyi erovel a C-ben kodolt binarisok visszafejtesere is van lehetoseg, a reverse engineering nem ismer hatarokat :)

A probléma:
egy olyan helyre kell webes applikációt készítenem, ahol a rendszergazdának van egy saját web-es cége. Azonkívül, hogy helyből utál, mert nem őt választották, amúgy sem csípem az ostoba búráját. Nem szívesen ajándékozom neki a munkámat azzal, hogy hozzáfér a PHP forráshoz. Titkosítsam valami ingyenessel? Vagy inkább írjak C-ben CGI-t?

A PHP mellett szól, hogy az utóbbi időben a legtöbbet vele dolgoztam.
Ellene, hogy olvasható a source.
A C mellett szól, hogy szeretem a C-t, és nem kell a forrást a szerverre töltenem.
Ellene, hogy lassúbb és munkaigényesebb a fejlesztés.

A legjobb megoldás a zend lenne számodra, van encodere is, egyetlen hátránya, hogy jó ára van
de ha kell megéri. (És overnet rulez :))

Ha ismered minkdet nyelvet, akkor gondolom nyilvanvalo, hogy tokeletesen mas celra hasznalhatok. A megoldando feladatrol egyetlen arva szot sem szoltal, de a 'tipikus' webes alkalmazasoknal a C nem rug labdaba, ha a fejlesztesi idot, karbantarthatosagot nezzuk.