Web Development – Checking for Software on User’s Machine via Browser

asp.netweb-development

There has been a discussion recently (with my colleagues) on whether or not checks should be performed on client machines to check for specific software, within a web based platform, mainly because we have some requirements for certain user actions and to help diagnose certain issues we could log whether or not they actually had that software. On a users PC at an internal company this seems fairly straight forward as a lot of companies will have the same software on each machine, but this is on client machines outside of the company.

As it would be client side via a web interface (built using ASP.NET) I guess I'd use JavaScript to do the look-ups, however it occurs to me that there are potential pit-falls with this, namely:

  1. A user may have similar software to what you say is a requirement e.g. Open Office instead of MS Office

  2. A user may have installed the software in a different location to the default area

  3. A huge variety of software types on multiple different operating systems (Windows, iOS, Android, etc).

  4. Software versions can vary so that would need accounted for, especially as they can be installed in different areas (e.g. Visual Studio).

I also remember old discussions from many moons ago that checking for things like Browser version, or even Operating System, were relatively frowned upon and to me this seems semi-similar.

So my question is as follows:

Is there a best practice for, or against, checking for software on a client machine via a web browser? Be it for Adobe, or Word, or whatever other software a website may want a user to have. Ideally some reference material would be great.

To me it seems there are a lot of downsides, and it also puts a lot of onus on the webpage to ensure a user has the correct software (I’m a believer in the practice that a UI should have little to no working knowledge of its back end system or anything else).

edit just to point out, my question is not related to using JavaScript to do this, it is around best practice on whether you should attempt to do some form of check.

Best Answer

These checks invariably fail. Try to avoid tying your application to specific software, browsers or versions. Code to standards. As it appears you are Microsoft based, you may need to code around issues with different Internet Explorer versions. Try to keep these to a minimum.

From a security standpoint, you don't want to prevent users from upgrading to a supported version. You especially don't want to force them to remain on an insecure version.

I have run into numerous issues with built-in checks. Two significant version checks (both from vendors that should know better) I have had to deal with are:

  • A virus scanner Java console that was pinned to a specific patch level of Java. It failed whenever Java was updated (for security fixes).
  • A program that was configured to run on only 4 versions of Internet Explorer stopping at IE8. It works fine on IE9, if you spoof the User Agent.
Related Topic