Advertisement

Hack-proof website, why not?

Started by October 23, 2015 06:08 PM
93 comments, last by ronan.thibaudau 8 years, 11 months ago

A hack proof website is one which is only static html pages, with no processing on the server side...

The website itself couldn't ever be hacked then, but the server software or os could be, this is a different kettle of fish. You can mitigate this by unloading every cgi like module and unused feature from your Web server software, and only running the Web server software and no other daemon at all.

And yes, there are tons of useful html only websites even in 2015...

All of this is still "hacking a website", wether you do it through the OS or the web server the end result is the same, you can take the website down, you can get the website source, you can change the website content, the website is hacked.

1) yes which is why there are 2 discutions in parallel, my use case which is pretty easy to secure, and the generic website use case which i still believe is possible but is definately not quite as simple nor black and white.

2) it's not a typical business model at all, basically none of those customers are mine to begin with but i don't want to enter into détails here, but for simplity's sake just assume it's the type of 1 time end user purchase where there's pretty much no hope of making a second purchase and that works on the volume of people ordering. A quite silly example would be purchasing a casquet for your funeral, you're unlikely to buy another one, ok it's not the same here but it's very likely around 1% of our customers at most would be returning customers, and probably 1% of that 1% would return more than once.

3) You can't really "guess" it except by brute force, and there's no value in it anyway, basically it would take a LOT of effort to get ONE url right and all you'd get is a model of someone (you don't know who) out of a million. There's Nothing wrong with that, Dropbox urls are much shorter than 2000 character long and are widly used. Once again this is not Customer bank account detail it gives you access to, it gives you something that is "really" not sensitive. And i still do my best to secure it but it's NOT possible to secure what goes on the net (data you transmit) and it's NOT my business to do it (i can't secure end user email accounts that are out of my controls, or the routers of their isps), my job is only to try and keep their data private within the limits of my network and doing that by sending them an url with 64 power 2000 possible combinations seems . . . fairly safe, but once again this is for argument's sake, it is NOT the part i claim can be fully secured, i'm just answering to that since you bring it up. For comparison (the filename aside) dropbox's randomly generated size is 15 characters when you create a link to share, and a link to share is exactly what we send to the customer, except 64 pow 2000 is quite a bit more than 64 (or 255 or whatever they use) pow 15

4) What we do hasn't been done before but as i said i'm not ready to announce it yet. It is sufficiently different to be very valuable and it's not simply photogrammetry, if you're that curious pm me i won't say much more but the little more i'll say will help understand why there's value to protect.

You missunderstand how i treat my customer assets, i secure them the best i can, but just like any business i put "more" work on the critical parts that are securable than on the public part that by definition can't be fully secured.

The internet ate my response, so I'll keep this retry short...

My post was not meant as an attack on your or your business idea. With the limited information you can give me, I am in no position to really make the call there...

Also I think I can agree 100% to your last sentence. Invest into security where it matters, invest into risk mitigation where security is not possible or becomes overly expensive.

I wouldn't dismiss brute force attacks altogether. Thanks to programmable GPUs, brute forcing has become viable again. Altough a 2000 character string is in a different league to the usual 128-bit encryption brute force attacks target usually.

If your site really is a prime target for hackers IDK... most probably not.

Advertisement

1) yes which is why there are 2 discutions in parallel, my use case which is pretty easy to secure, and the generic website use case which i still believe is possible but is definately not quite as simple nor black and white.

2) it's not a typical business model at all, basically none of those customers are mine to begin with but i don't want to enter into détails here, but for simplity's sake just assume it's the type of 1 time end user purchase where there's pretty much no hope of making a second purchase and that works on the volume of people ordering. A quite silly example would be purchasing a casquet for your funeral, you're unlikely to buy another one, ok it's not the same here but it's very likely around 1% of our customers at most would be returning customers, and probably 1% of that 1% would return more than once.

3) You can't really "guess" it except by brute force, and there's no value in it anyway, basically it would take a LOT of effort to get ONE url right and all you'd get is a model of someone (you don't know who) out of a million. There's Nothing wrong with that, Dropbox urls are much shorter than 2000 character long and are widly used. Once again this is not Customer bank account detail it gives you access to, it gives you something that is "really" not sensitive. And i still do my best to secure it but it's NOT possible to secure what goes on the net (data you transmit) and it's NOT my business to do it (i can't secure end user email accounts that are out of my controls, or the routers of their isps), my job is only to try and keep their data private within the limits of my network and doing that by sending them an url with 64 power 2000 possible combinations seems . . . fairly safe, but once again this is for argument's sake, it is NOT the part i claim can be fully secured, i'm just answering to that since you bring it up. For comparison (the filename aside) dropbox's randomly generated size is 15 characters when you create a link to share, and a link to share is exactly what we send to the customer, except 64 pow 2000 is quite a bit more than 64 (or 255 or whatever they use) pow 15

4) What we do hasn't been done before but as i said i'm not ready to announce it yet. It is sufficiently different to be very valuable and it's not simply photogrammetry, if you're that curious pm me i won't say much more but the little more i'll say will help understand why there's value to protect.

You missunderstand how i treat my customer assets, i secure them the best i can, but just like any business i put "more" work on the critical parts that are securable than on the public part that by definition can't be fully secured.

The internet ate my response, so I'll keep this retry short...

My post was not meant as an attack on your or your business idea. With the limited information you can give me, I am in no position to really make the call there...

Also I think I can agree 100% to your last sentence. Invest into security where it matters, invest into risk mitigation where security is not possible or becomes overly expensive.

I wouldn't dismiss brute force attacks altogether. Thanks to programmable GPUs, brute forcing has become viable again. Altough a 2000 character string is in a different league to the usual 128-bit encryption brute force attacks target usually.

If your site really is a prime target for hackers IDK... most probably not.

I don't think it's a prime target for hackers, nor a target at all, but it may be a target for "cheap" industrial espionage, definately not for Something on the scale required to get to it however.

Programmable GPU don't help at all on brute forcing Something remotely, if you have physical access to Something then you can brute force (well, not quite so simple but let's assume you can). However with remote calls a GPU won't help, it's not hard at all to "generate" the sequence of all 64pow2000 sequences that are 2000 characters long in a set using 64 characters, however it's not like cracking a password, you can't just keep doing it untill you get an expected output here, it's easy to limit retries (even on valid queries), even if i set a max to Something crazy high for a human user (5 tries / second / ip) and you attack it remotely with a botnet of 1 000 000 bots at full speed you're only trying 5 000 000 strings / second or less than 450 billion / day. Just to be clear as sometimes numbers are clearer than powers to visualize (i hope this will go through while posting . . .).

Everyday hammering the service (assuming it could answer that fast) you'd have 450 000 000 000 / 64E2000 or 1/(64E2000/450 000 000 000) chance per day to find the one set you're looking for. Even if you're looking for any set and assuming my company is very sucessfull and ends up with 20 million sets that's still only 20 000 000 more chance to get "one" set per day or 1/(64E2000/(450 000 000 000 * 20 000 000)) = a daily chance of 1 over . . . .

2545103559444807158331393412336531102738462034265616408950137167271459316786378199063764176286730354
0389994817360492053751740454333711846161926807684550437183503479585877330106788849846616518186018410
4920438763258960941130374594534813423252089994711897746155337690055778839703977151800618519636737617
0943898614408607887885350435420957087305709889469026504615155558150583532478823946089791981831630527
2179531979169179682170466737129767505784181166341955741631321247349480055139727123504131521607952106
1167487583841347488261305351674815615577033828109775588500971846447858773712262123607045657609249322
7742987872660253320329504515126344230996638941771297179256692920162223394442546547650049781551782045
3197996141160795274929837096479530977800395794156900379509684144089108947243313788583358983201333598
5961113363648413639165383292765262745993725114656983136360980687829427521843876982026629922805768046
3196946394821207699471708706647596692826129542818795967829432691145633500980881486725158886584442397
7991213655988684319079210289968370919212605906909614599762317572685616844252794827190369591670531315
1973904114555956643765528730597545367055674086294981244440059416393003815852709170444504234442071319
1962330091214544867404382691988552126283211133591365009171664392329763403382633442598324641461033574
1583895831908342598438629768772328534003035940792154614733323123877101448093562781955774783799572489
9130335162671993112632382185242702262288679097527929197285834213629819359553298031870448232126497239
4185969696803258025430983564802088517811775088636541981097429409066602888414726765277334430842398167
0444288351639024120775089717810526492002037621387310670459324441453045948187438799515205740126418602
6356464226879900763364532114879571566569629043034194740006422724913922493035317605864720581056194597
3454882718302533950434641301825722880336515707764317537017113091377217545312944566733208082884385314
5560524432832561528602119312211830202472431390527538785079568528316639148155209025327679416799961817
1771804970436553142969725650801801137714936735571656364231607428210327133968874411778976405500037978
5449766868244729703414014188337192446462734748933256992204890470221917148992241195940670858370824406
9904844399927645947459001458371816761447022642403356836979320742936682548848830749687296812959449288
3978294969492994634006292484633638878560485866853758928744348503327381402284920437146115615005431224
1719113931534209910282154746789314038814250153949312997475820772943057118397653594163909042739363142
5057870903445212418057970669328068882560603849278153809547812949459453307501190848671381680798871034
1990232640638161244598527283875780268311929193095817888667901256400711321718938008004179749718980027
0574295775559952855093445623116290395885000133496272974601730874054034373529272821115846787900185787
6778620281653350933352471190075523954072769330983719623028479313009335458660853926872637243108014197
0383272278636702105611560781610250076709706188507628565032303829581642994717393680279719901607401518
9120817871368185727295306980299565545075579647554469763050096329709275351224678777837987863326420747
5228849800731785972381515745890193834633779570259434037655597464194139788275924917177666375806274160
6774871001728019523293580688195213712185470532245144573230709227716422348361764245036475029369989862
7585332335036100832928200764122388267111780469582004997491869335449147948028904374813027792594664836
3471061671365801223390792974615775740694445904782527114993197381252952916522574784097295871231639073
3334804904834023043671314526486407663611433745738885303757660397658191725869250735171406070153

Yea, that won't happen smile.png

I would personally recommend against using a 2000-character "key" in the URL. While it is without any doubt impossible to guess, it is also one of the things that will instantly cause anyone with a security-related background to assume that you have no profound understanding of the matter, and shout at you accordingly. You're losing a lot of credibility doing that (in addition to using the word "unhackable"). 42 radix-64 characters are equivalent to a work factor of 2[sup]256[/sup], which is commonly agreed to be thermodynamically impossible to brute-force, even assuming an ideal computer. That means that using 50 or 60 radix-64 characters, let alone 2,000 of them, is entirely meaningless. Even more so as an online attack is as far from an ideal computer as it can possibly be. Do something reasonable, use 42 characters (32 would be enough, too -- that's still a 2[sup]192[/sup] workload). Or 50 if you really feel like going all paranoia. But never 2,000.

I would personally recommend against using a 2000-character "key" in the URL. While it is without any doubt impossible to guess, it is also one of the things that will instantly cause anyone with a security-related background to assume that you have no profound understanding of the matter, and shout at you accordingly. You're losing a lot of credibility doing that (in addition to using the word "unhackable").

42 radix-64 characters are equivalent to a work factor of 2256, which is commonly agreed to be thermodynamically impossible to brute-force, even assuming an ideal computer. That means that using 50 or 60 radix-64 characters, let alone 2,000 of them, is entirely meaningless. Even more so as an online attack is as far from an ideal computer as it can possibly be.

Do something reasonable, use 42 characters (32 would be enough, too -- that's still a 2192 workload). Or 50 if you really feel like going all paranoia. But never 2,000.

Not really no. I know it's by far overkill (my post should make that clear), there are other reasons for making it long that are unrelated to guessability and there's no drawback at all to making it longer, there's pretty much 0 cost to generating / storing those keys. If you read the thread you'll see the claim of unhackability have 0 Relationship with this key nor even the data it protects but to the exe in ram once again, i was just answering to the question about that risk but yes that risk would be close to 0 even with a massively shorter identifier.

64^2000 = 2^16000. Overkill.

Advertisement

Why exactly are you using the URL for anything related to security? Do you not have a credentials based log-in session setup? /TheClearAndEasyToUnderstandFileName or just /YourFiles is a whole lot cleaner and easier to deal with from a user's standpoint.

Old Username: Talroth
If your signature on a web forum takes up more space than your average post, then you are doing things wrong.

Why exactly are you using the URL for anything related to security? Do you not have a credentials based log-in session setup? /TheClearAndEasyToUnderstandFileName or just /YourFiles is a whole lot cleaner and easier to deal with from a user's standpoint.

I guess that is already answered by ronan.thibault: his server should not contain any user data at all:

We don't really store "Customer data", what can be hacked (not on our system, but outside as it transit on the net) are actual 3D models generated from sets of pictures of a given person, those are pretty much uninteresting except for the given person.

So I guess he intends to use the URL to contain such session information (how exactly he handles session failures like browser crashes and so on without the customer loosing access to the generated model IDK, but he mentioned that he only described the service and how it works in parts, which is understandable)...


Why exactly are you using the URL for anything related to security? Do you not have a credentials based log-in session setup? /TheClearAndEasyToUnderstandFileName or just /YourFiles is a whole lot cleaner and easier to deal with from a user's standpoint.

Heh. This reminds me of a honey pot I put in several of my sites. Embedded deep inside is a plaintext string in a url request that looks like sql. It's only purpose is to be checked for changes and is in no way part of the database code. If it's been changed the curious person trying to tweak it ends up temporary firewalled and an email alert comes to me...

Heh. This reminds me of a honey pot I put in several of my sites. Embedded deep inside is a plaintext string in a url request that looks like sql. It's only purpose is to be checked for changes and is in no way part of the database code. If it's been changed the curious person trying to tweak it ends up temporary firewalled and an email alert comes to me...

Did it ever get triggered? happy.png

This topic is closed to new replies.

Advertisement