{"id":182654,"date":"2008-03-13T00:00:00","date_gmt":"2009-10-31T09:51:52","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/msr-research-item\/candidate-talk-techniques-and-tools-for-engineering-secure-web-applications\/"},"modified":"2016-09-09T09:49:22","modified_gmt":"2016-09-09T16:49:22","slug":"candidate-talk-techniques-and-tools-for-engineering-secure-web-applications","status":"publish","type":"msr-video","link":"https:\/\/www.microsoft.com\/en-us\/research\/video\/candidate-talk-techniques-and-tools-for-engineering-secure-web-applications\/","title":{"rendered":"Candidate Talk: Techniques and Tools for Engineering Secure Web Applications"},"content":{"rendered":"<div class=\"asset-content\">\n<p>Web applications enable much of today&#8217;s online business including banking,<br \/>\nshopping, university admissions, and various governmental activities.<br \/>\nAnyone with a web browser can access them, and the data they manage<br \/>\ntypically has significant value both to the users and to the service<br \/>\nproviders.  Cross-site scripting (XSS) and SQL injection are classes of<br \/>\nattacks in which an attacker interacts with a client or database,<br \/>\nrespectively, through vulnerabilities in the server thereby gaining the<br \/>\ntrust level of the server.  These classes of attacks are pervasive:<br \/>\nsince 2005, they have been the most frequently reported classes<br \/>\nof vulnerabilities.  These vulnerabilities arise because web applications&#8217;<br \/>\nlayers (client, server, and database) communicate via unstructured strings,<br \/>\nand validating untrusted input for use in these commands is error-prone and<br \/>\nintroduces a challenging software engineering problem.<\/p>\n<p>In this talk, I will present a general characterization of these classes of<br \/>\ninput validation-based errors and a set of dynamic and static techniques to<br \/>\ndetect and prevent XSS and SQL injection attacks.  Programmers usually do<br \/>\nnot specify their intentions explicitly regarding SQL query construction,<br \/>\nbut I will show how we can use principled techniques to characterize<br \/>\nprogrammer intentions.  We can then prevent attack queries from being sent<br \/>\nto the database with a low-overhead, runtime check that precisely<br \/>\ndistinguishes legitimate queries from attacks.  In order to help find bugs<br \/>\nearly in the software development process, I also pursued static analysis,<br \/>\nand I will describe a sound and precise analysis that scales to large,<br \/>\nreal-world web applications and found known and unknown SQL injection<br \/>\nvulnerabilities.  I will further present how we extended this static<br \/>\nanalysis to the related but more difficult problem of XSS.  I will conclude<br \/>\nthis talk by discussing future challenges in this domain.<\/p>\n<\/div>\n<p><!-- .asset-content --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Web applications enable much of today&#8217;s online business including banking, shopping, university admissions, and various governmental activities. Anyone with a web browser can access them, and the data they manage typically has significant value both to the users and to the service providers. Cross-site scripting (XSS) and SQL injection are classes of attacks in which [&hellip;]<\/p>\n","protected":false},"featured_media":194721,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","msr_hide_image_in_river":0,"footnotes":""},"research-area":[],"msr-video-type":[],"msr-locale":[268875],"msr-post-option":[],"msr-session-type":[],"msr-impact-theme":[],"msr-pillar":[],"msr-episode":[],"msr-research-theme":[],"class_list":["post-182654","msr-video","type-msr-video","status-publish","has-post-thumbnail","hentry","msr-locale-en_us"],"msr_download_urls":"","msr_external_url":"https:\/\/youtu.be\/GVNTKwHnftY","msr_secondary_video_url":"","msr_video_file":"","_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/182654","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-video"}],"version-history":[{"count":0,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/182654\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media\/194721"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=182654"}],"wp:term":[{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=182654"},{"taxonomy":"msr-video-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video-type?post=182654"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=182654"},{"taxonomy":"msr-post-option","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-post-option?post=182654"},{"taxonomy":"msr-session-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-session-type?post=182654"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=182654"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=182654"},{"taxonomy":"msr-episode","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-episode?post=182654"},{"taxonomy":"msr-research-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-theme?post=182654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}