Denial-of-service (DoS) attacks attempt to make a computer resource unavailable or insufficiently available to its intended users. Distributed denial-of-service (DDoS) attacks are launched by two or more persons or bots. DoS and DDoS attacks are generally of greater concern for persistent, server-type systems than for desktop applications; nevertheless, denial of service issues can arise for all classes of application

There are several methods of causing a denial of service:

Denial of Service Through Resource Exhaustion

Denial of service can occur when resource usage is disproportionately large in comparison to the input data that causes the resource usage. Checking inputs for excessive resource consumption may be unjustified for client software that expects the user to handle resource-related problems. Even such client software, however, should check for inputs that could cause persistent denial of service, such as filling up the file system.

The Secure Coding Guidelines for the Java Programming Language [SCG 2009] lists some examples of possible attacks:

Rules regarding prevention of denial of service attacks resulting from resource exhaustion include:

Concurrency-Related Denial of Service

Some denial of service attacks operate by attempting to induce concurrency-related problems such as thread deadlock, thread starvation, and race conditions.

Rules regarding prevention of denial of service attacks resulting from concurrency issues include:

Other Denial of Service attacks

Additional rules regarding prevention of denial of service attacks include:

Precursors to Denial of Service

A number of additional rules address vulnerabilities that can enable denial of service attacks, but that are insufficient to cause denial of service on their own. These rules include:

Bibliography

[Seacord 2015]Image result for video icon Denial-of-service attacks  LiveLesson