SWEN-331: Engineering Secure Software Benjamin S Meyers
Defensive Coding Techniques (Pt. 2)
Engineering Secure Software
Last Revised: September 25, 2020 1
Defensive Coding Techniques (Pt. 2) Engineering Secure Software - - PowerPoint PPT Presentation
Defensive Coding Techniques (Pt. 2) Engineering Secure Software Last Revised: September 25, 2020 SWEN-331: Engineering Secure Software Benjamin S Meyers 1 Last Time... Always code defensively Validating input Principles
SWEN-331: Engineering Secure Software Benjamin S Meyers
Last Revised: September 25, 2020 1
SWEN-331: Engineering Secure Software Benjamin S Meyers
2
SWEN-331: Engineering Secure Software Benjamin S Meyers
3
Obj1 ObjA Val
SWEN-331: Engineering Secure Software Benjamin S Meyers
4
Obj1 Obj2 ObjA Val
SWEN-331: Engineering Secure Software Benjamin S Meyers
5
Obj1 Obj2 ObjA Val
SWEN-331: Engineering Secure Software Benjamin S Meyers
6
Obj1 Obj2 ObjA ValA ObjB ValB
SWEN-331: Engineering Secure Software Benjamin S Meyers
7
public final class Galaxy { // Regular Constructor public Galaxy(Double mass, String name) { this.mass = mass; this.name = name; } // Copy Constructor public Galaxy(Galaxy galaxy) { this(galaxy.getMass(), galaxy.getName()); } public Double getMass() { return mass; } public String getName() { return name; } }
SWEN-331: Engineering Secure Software Benjamin S Meyers
8
SWEN-331: Engineering Secure Software Benjamin S Meyers
9
SWEN-331: Engineering Secure Software Benjamin S Meyers
10 10
char a=5; char b=3; *(&a+1)=0; /* b is now 0 */ /* this may work, but not advisable */
SWEN-331: Engineering Secure Software Benjamin S Meyers
11 11
void GetData(char *MFAddr) { char pwd[64]; if (GetPasswordFromUser(pwd, sizeof(pwd))) { if (ConnectToMainframe(MFAddr, pwd)) { /* Interact with mainframe */ } memset(pwd, 0, sizeof(pwd)); /* Clear password */ } }
SWEN-331: Engineering Secure Software Benjamin S Meyers
12 12
putenv(“TEST_ENV=foo”); putenv(“Test_ENV=bar”); const char *temp = getenv(“TEST_ENV”); if (temp == NULL) { /* Handle error */ } printf(“%s\n”, temp); /* “foo” on Linux, “bar” on Windows */
SWEN-331: Engineering Secure Software Benjamin S Meyers
13 13
SWEN-331: Engineering Secure Software Benjamin S Meyers
14 14
SWEN-331: Engineering Secure Software Benjamin S Meyers
15 15
SWEN-331: Engineering Secure Software Benjamin S Meyers
16 16
SWEN-331: Engineering Secure Software Benjamin S Meyers
17 17
SWEN-331: Engineering Secure Software Benjamin S Meyers
18 18
SWEN-331: Engineering Secure Software Benjamin S Meyers
19 19