I built a .Net web application for a company and it is going to be hosted on their own web-server that don't have access to the internet. the solutions i have thought so far is to get the MAC address of the web-server and check it before the application runs, this will require to get every MAC address in the application and re-publish for every other deployment. And how can i make it to be renewable every year. The licence is only for one year.
There is no absolutely fool-proof technical way of ensuring that your product will not get used without a proper license. You can only take technical measures to make it harder.
Based on that premise, the first question you should ask yourself is how likely it is that your customers would try to go against your license and get themselves potentially into legal trouble.
Based on that assessment, you can take your prevention methods, for example, in increasing difficulty and cost:
- a date-based activation code: after payment, you send them an activation code that adjusts the expiration date
- a machine-locked activation code: The application generates a machine-specific request code (e.g. based on MAC address) and you send (after payment) an activation code that checks both the date and the machine running the application
- a hardware dongle: the application requires both the presence of a hardware dongle and a activation code that control the expiration date.
- a hardware dongle with internal clock: Same as above, but now the hardware dongle determines the current date.
None of this prevents reverse engineering the application to bypass the license check.