Editing Talk:1700: New Bug

Jump to: navigation, search
Ambox notice.png Please sign your posts with ~~~~

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
 
<!--Please sign your posts with ~~~~-->
 
<!--Please sign your posts with ~~~~-->
 
I'm new. For the explanation: A bug, as in a computer (programming) bug, can be reported and tracked, and many systems allow collaboration on the reporting and tracking of problems, or bugs, in code, and their solutions. Cueball reported a problem (bug) he found in the code, which presumably caused the server (program)&mdash;which he wrote as part of his project&mdash;to try to read the passwords as URLs before storing them. This exposes serious cross-site scripting attacks and other serious security vulnerabilities, and since handling password and user account information usually requires a lot of programming, this would be difficult to fix, which is why the character off-panel suggests burning the project down, as that would be much easier, and would solve any security problems, much more quickly than fixing the bug would. The comment text refers to Cueball's horrid solution to a horrid problem: Instead of solving the problem that is causing the server to read passwords as URLs, he can instead leverage a known problem in the programme which reads URLs which prevents it from reading a particular way of representing text in binary form, by adding a few characters to the user's password that the URL-reading program can't read. This would also "salt" the user's password, which is a security technique that makes passwords harder to figure out when they are stored properly. Cueball thinks this would solve the original problem, and two other problems at the same time, the second problem being the fact that user's passwords aren't salted (a security problem). The third solved problem is difficult to deduce.  &emsp;[[User:Zyzygy|Zyzygy]] 05:40, 29 June 2016 (UTC)
 
I'm new. For the explanation: A bug, as in a computer (programming) bug, can be reported and tracked, and many systems allow collaboration on the reporting and tracking of problems, or bugs, in code, and their solutions. Cueball reported a problem (bug) he found in the code, which presumably caused the server (program)&mdash;which he wrote as part of his project&mdash;to try to read the passwords as URLs before storing them. This exposes serious cross-site scripting attacks and other serious security vulnerabilities, and since handling password and user account information usually requires a lot of programming, this would be difficult to fix, which is why the character off-panel suggests burning the project down, as that would be much easier, and would solve any security problems, much more quickly than fixing the bug would. The comment text refers to Cueball's horrid solution to a horrid problem: Instead of solving the problem that is causing the server to read passwords as URLs, he can instead leverage a known problem in the programme which reads URLs which prevents it from reading a particular way of representing text in binary form, by adding a few characters to the user's password that the URL-reading program can't read. This would also "salt" the user's password, which is a security technique that makes passwords harder to figure out when they are stored properly. Cueball thinks this would solve the original problem, and two other problems at the same time, the second problem being the fact that user's passwords aren't salted (a security problem). The third solved problem is difficult to deduce.  &emsp;[[User:Zyzygy|Zyzygy]] 05:40, 29 June 2016 (UTC)
βˆ’
 
 
: The third bug is the unicode handling, which would need to be solved in order to salt passwords with emoji since these are unicode only character. Although I'm not sure if salting with emoji really increases security since as a rule i'd say nobody uses emoji in their passwords. [[Special:Contributions/162.158.85.123|162.158.85.123]] 06:34, 29 June 2016 (UTC)
 
: The third bug is the unicode handling, which would need to be solved in order to salt passwords with emoji since these are unicode only character. Although I'm not sure if salting with emoji really increases security since as a rule i'd say nobody uses emoji in their passwords. [[Special:Contributions/162.158.85.123|162.158.85.123]] 06:34, 29 June 2016 (UTC)
βˆ’
 
 
::Password:Β πŸ‘πŸŽπŸ”‹Ξ  [[Special:Contributions/141.101.98.131|141.101.98.131]] 10:11, 29 June 2016 (UTC)
 
::Password:Β πŸ‘πŸŽπŸ”‹Ξ  [[Special:Contributions/141.101.98.131|141.101.98.131]] 10:11, 29 June 2016 (UTC)
 
:::That is a really funny password, [[936: Password Strength|but is it strong ennough?]] :-) --[[User:Kynde|Kynde]] ([[User talk:Kynde|talk]]) 20:22, 29 June 2016 (UTC)
 
:::That is a really funny password, [[936: Password Strength|but is it strong ennough?]] :-) --[[User:Kynde|Kynde]] ([[User talk:Kynde|talk]]) 20:22, 29 June 2016 (UTC)
Line 11: Line 9:
 
From 108.162.221.22 (long rant)
 
From 108.162.221.22 (long rant)
 
:Two comments: first, the explanation on password salting is incorrect.  The current version says "Salting passwords increases security by adding random data to the passwords which primarily helps defend against dictionary attacks.".  Password salting only protects against particular kinds of (common) attacks in specific situations.  Most importantly, it is designed to protect passwords only in the event ofa database breach, when a malicious user has gained direct access to the database itself.  Password salting provides no protection when brute force attacks (aka dictionary attacks) are directed at the application itself, as the application automatically takes hashes into account.  Instead, proper password salting randomizes the hash for each password, ensuring that if two users have the same password, they will not have the same hash.  This makes it much more difficult to guess passwords through attack vectors like lookup tables, reverse lookup tables, and rainbow tables.  However, because the salt has to be stored with the password (otherwise the application would not be able to make sense of the hash itself), password salting does not secure passwords against dictionary attacks even in the event that a malicious user has managed to acquire the database itself.  I will update the explanation with a brief description of what password salts do.
 
:Two comments: first, the explanation on password salting is incorrect.  The current version says "Salting passwords increases security by adding random data to the passwords which primarily helps defend against dictionary attacks.".  Password salting only protects against particular kinds of (common) attacks in specific situations.  Most importantly, it is designed to protect passwords only in the event ofa database breach, when a malicious user has gained direct access to the database itself.  Password salting provides no protection when brute force attacks (aka dictionary attacks) are directed at the application itself, as the application automatically takes hashes into account.  Instead, proper password salting randomizes the hash for each password, ensuring that if two users have the same password, they will not have the same hash.  This makes it much more difficult to guess passwords through attack vectors like lookup tables, reverse lookup tables, and rainbow tables.  However, because the salt has to be stored with the password (otherwise the application would not be able to make sense of the hash itself), password salting does not secure passwords against dictionary attacks even in the event that a malicious user has managed to acquire the database itself.  I will update the explanation with a brief description of what password salts do.
 +
 
:Finally, I think there is a big misunderstanding throughout this explanation.  In a web services context the "server" (referenced in the comic) is a very different thing than the application that a programmer builds.  A server can refer to either the computer itself or the software that is responsible for responding to web requests and executing the actual application.  In a professional context, the application (which is what cueball would be building) would never be referred to as the "server".  It is possible that this is a mis-use of terminology on the part of cueball or Randall, but I suspect that the term was used properly and intentionally.  The reason is because if cueball's application is crashing the *server*, it takes the level of incompetence up to completely new (and unusual) levels, in much the same way that he has done in the past.  Normally the programming language used to build the application, the software hosting the application, and the operating system itself have a number of safe guards in place to ensure that if an application misbehaves, the only thing that crashes is the application itself.  For cueball's application to break through all those safeguards and crash the server itself (either the operating system or the web server software) would require cueball to have developed a program that operates *well* outside the bounds of normal procedures.  Just for reference, as someone who has been building web software for over 15 years, I wouldn't even know where to start to crash the server from within an application. It would probably have to involve either exploiting a previously unknown bug in the programming language or some *very* poorly designed system calls.  [[Special:Contributions/108.162.221.22 15:11, 29 June 2016β€Ž 108.162.221.22]] (Rememeber to sign your comments)  
 
:Finally, I think there is a big misunderstanding throughout this explanation.  In a web services context the "server" (referenced in the comic) is a very different thing than the application that a programmer builds.  A server can refer to either the computer itself or the software that is responsible for responding to web requests and executing the actual application.  In a professional context, the application (which is what cueball would be building) would never be referred to as the "server".  It is possible that this is a mis-use of terminology on the part of cueball or Randall, but I suspect that the term was used properly and intentionally.  The reason is because if cueball's application is crashing the *server*, it takes the level of incompetence up to completely new (and unusual) levels, in much the same way that he has done in the past.  Normally the programming language used to build the application, the software hosting the application, and the operating system itself have a number of safe guards in place to ensure that if an application misbehaves, the only thing that crashes is the application itself.  For cueball's application to break through all those safeguards and crash the server itself (either the operating system or the web server software) would require cueball to have developed a program that operates *well* outside the bounds of normal procedures.  Just for reference, as someone who has been building web software for over 15 years, I wouldn't even know where to start to crash the server from within an application. It would probably have to involve either exploiting a previously unknown bug in the programming language or some *very* poorly designed system calls.  [[Special:Contributions/108.162.221.22 15:11, 29 June 2016β€Ž 108.162.221.22]] (Rememeber to sign your comments)  
  

Please note that all contributions to explain xkcd may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see explain xkcd:Copyrights for details). Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel | Editing help (opens in new window)

Template used on this page: