As the second term of my capstone project nears its end, I have made a lot of progress on developing my project and also faced a few challenges along the way. With my solid research and planning on web vulnerabilities, identifying and mitigating the vulnerabilities has been fairly straightforward. However, lacking experience on a lot of the required skills for implementing this project has set me back compared to my expectations of progress. This factor is compounded as I working independently rather than on a team, where other folk’s skillsets could help fill the gaps in my experience. Working independently requires teaching oneself all of the skills necessary for project development. Luckily, it seems that the time saved by my solid prep work has balanced out the time lost to my inexperience, and I am on track with my Development Plan.
Balancing Time
One example of this balancing act was with implementing session management for the vulnerability toggle. This was a relatively simple task, so I did not expect it to take long to implement. However, as with all new skills, there were hiccups along the way and I had issues incorporating my session information into the vulnerability toggle. I continued to spend extra time learning how to properly implement this by referencing documentation and guides, but was still able to keep pace with my Development Plan and Sprint Plan because I had planned out the vulnerabilities and mitigations so well that implementing them in the project was typically painless. With simple and well-planned attacks and mitigations, the bulk of my time was spent on the setup for each attack which typically involved a new webpage and an additional security feature.
Adapting Knowledge from Previous Course Projects
Working on this project has required combining my experience of previous course projects into one robust project, as well as learning and implementing completely new skillsets. The previous course assignments that have most specifically been helpful to my project are the final web application from Intro to Databases, the Final Prototype from Usability Engineering, and the Damn Vulnerable Web Application assignment from Intro to Security. Each of these projects were helpful for a small aspect of the project: the Prototype was helpful for my initial design phase, the web application was helpful for my base website implementation, and the DVWA was helpful in informing my approach to the vulnerabilities and user interface. While each of these projects were a helpful as starter information, previous projects were more limited in scope than my project is, so it took some adapting as well as learning new skills for project implementation.
Bridging the Gap from Theoretical Knowledge
A similar challenge highlighted by this project is bridging the gap between the theoretical knowledge taught in a lot of the security classes and actually applying the knowledge in a real-world implementation. Beyond the limited aspects of this projects that overlapped with my previous experience, this project has involved learning new skills and applying them to my project, which takes a lot of time. I was initially frustrated with this, feeling that I was not progressing with development at an acceptable page. As time went on, I began to feel differently about the time spent learning, as it is a necessary part of project development. Learning how to implement the project is an important part of project development. It is vital to know how to learn new skills when they are necessary, especially working in Computer Science. Technology moves so quickly that it is important to be able to adapt your knowledge with new experiences, or your knowledge will risk becoming outdated.
Looking Forward
As project development for this term is complete, I am proud of my progress and looking forward to continuing development. I have implemented a basic web application and database and have addressed a few vulnerabilities present in it. With a lot of the project set-up complete, further development will address a further vulnerabilities. The more vulnerabilities addressed in my project, the more helpful it will be for users to gain experience with penetration testing and web-based vulnerabilities. My hope is to continue developing this project by adding further vulnerabilities even once I have graduated.