This login form keeps changing the names of its fields:
What does that accomplish? What kind of attack does it protect against?
This login form keeps changing the names of its fields:
What does that accomplish? What kind of attack does it protect against?
Your example is a banking app. Many banks are facing trouble with "scraping" tools which collect information from the bank. Basically, the banks are so far behind on APIs for accessing our information that customers are choosing to give out their usernames and passwords to third party sites which then go scrape their financials and present them in a usable format (such as a CSV file).
Several banks have made the decision that this is a problem, and rather than build the API's, they're just trying to make it harder for scrapers to do their job. Dynamic fields like this are one tool they can leverage. Others have some token encoded into javascript which must be decoded and passed along. The idea is that if they can make it difficult enough for a 3d party to scrape your data, you'll stop giving out your password to make up for their failure to provide the services their customers are asking for.
It appears to be an anti-automation solution. Only whoever originally designed the requirements for this could tell you what exactly they were trying to accomplish, but here are a couple of guesses:
CAPTCHA - Trying to prevent automated form submission by bots.
Anti-CSRF - Trying to prevent Cross-Site Request Forgery
The this solution would only be 100% effective as an anti-caching mechanism, and maybe as an anti-csrf solution, depending on the specific implementation. It's also overkill for both of those problems. All of the other items I listed could be circumvented, although it would slow down a potential attacker.