There are cases where you have the opportunity, as a developer, to enforce stricter security features and protections on a software, though they could very well be managed at an environmental level (ie, the operating system would take care of it).

Where would you say you draw the line, and what elements do you factor in your decision?

Concrete Examples

User Management is the OS's responsibility

Not exactly meant as a security feature, but in a similar case Google Chrome used to not allow separate profiles. The invoked reason (though it now supports multiple profiles for a same OS user) used to be that user management was the operating system's responsibility.

Disabling Web-Form Fields

A recurrent request I see addressed online is to have auto-completion be disabled on form fields. Auto-completion didn't exist in old browsers, and was a welcome feature at the time it was introduced for people who needed to fill in forms often. But it also brought in some security concerns, and so some browsers started to implement, on top of the (obviously needed) setting in their own preference/customization panel, an autocomplete attribute for form or input fields. And this has now been introduced into the upcoming HTML5 standard. For browsers that do not listen to this attribute, strange hacks* are offered, like generating unique IDs and names for fields to avoid them from being suggested in future forms (which comes with another herd of issues, like polluting your local auto-fill cache and not preventing a password from being stored in it, but instead probably duplicating its occurences).

In this particular case, and others, I'd argue that this is a user setting and that it's the user's desire and the user's responsibility to enable or disable auto-fill (by disabling the feature altogether). And if it is based on an internal policy and security requirement in a corporate environment, then substitute the user for the administrator in the above.

I assume it could be counter-argued that the user may want to access non-critical applications (or sites) with this handy feature enabled, and critical applications with this feature disabled. But then I'd think that's what security zones are for (in some browsers), or the sign that you need a more secure (and dedicated) environment / account to use these applications.

* I obviously don't deny the ingeniosity of the people who were forced to find workarounds, just the necessity of said workarounds.


That was a tad long-winded, so I guess my questions are:

  • Would you in general consider it to be the application's (hence, the developer's) responsiblity?
  • Where do you draw the line, if not in the "general" case?
  • 2
    Although your question is on-topic here on Programmers, you might also be interested in the IT Security Stack Exchange. If you want this question migrated, please flag it - Security says it's on-topic for them as well. However, be aware of the different answers that you'll get on each site. You might also be interested in a Meta Stack Overflow question about cross-posting questions (read more than just the accepted answer). Perhaps consider refining your question and targeting both communities can help.
    – Thomas Owens
    Sep 14, 2012 at 23:12

1 Answer 1


Interesting question.

As a developer it's natural to want to draw the lines of responsibility in a logical and efficient way based on who implemented the functionality. Sadly, users care very little who is responsible for a program not working the way the they want it to. And the users are the source of your compensation, so as a practical matter if they don't want to take care of the issue via administration, it's the developer's problem.

Where you draw the line is where your customer draws the line. If they feel the existence of an administrative solution makes paying for development not worthwhile, then you go with the administrative solution.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.