Application Security



Similar documents
Recommended readings. Lecture 11 - Securing Web. Applications. Security. Declarative Security

Web Applications. For live Java training, please see training courses at

Controlling Web Application Behavior

Building Web Services with Apache Axis2

Java Web Programming. Student Workbook

Web Applications. Originals of Slides and Source Code for Examples:

Securing a Web Service

An Overview of Servlet & JSP Technology

Creating Java EE Applications and Servlets with IntelliJ IDEA

& JSP Technology Originals of Slides and Source Code for Examples:

JHU/EP Server Originals of Slides and Source Code for Examples:

Supplement IV.E: Tutorial for Tomcat. For Introduction to Java Programming By Y. Daniel Liang

JVA-122. Secure Java Web Development

Please send your comments to:

Setup Corporate (Microsoft Exchange) . This tutorial will walk you through the steps of setting up your corporate account.

<Insert Picture Here> Hudson Security Architecture. Winston Prakash. Click to edit Master subtitle style

The Google Web Toolkit (GWT): The Model-View-Presenter (MVP) Architecture Official MVP Framework

You Are Hacked End-to-End Java EE Security in Practice. Karthik Shyamsunder, Principal Technologist Phani Pattapu, Engineer

2. Follow the installation directions and install the server on ccc

Servlet and JSP Filters

Hadoop Streaming coreservlets.com and Dima May coreservlets.com and Dima May

2.8. Session management

Session Tracking Customized Java EE Training:

Security Code Review- Identifying Web Vulnerabilities

How To Understand The Architecture Of Java 2Ee, J2Ee, And J2E (Java) In A Wordpress Blog Post

Handling the Client Request: Form Data

How To Protect Your Computer From Being Hacked On A J2Ee Application (J2Ee) On A Pc Or Macbook Or Macintosh (Jvee) On An Ipo (J 2Ee) (Jpe) On Pc Or

Managed Beans II Advanced Features

Sample HP OO Web Application

Database Applications Recitation 10. Project 3: CMUQFlix CMUQ s Movies Recommendation System

WebNow Single Sign-On Solutions

Volume 1: Core Technologies Marty Hall Larry Brown. An Overview of Servlet & JSP Technology

Virtual Machine (VM) For Hadoop Training

Integrating Apex into Federated Environment using SAML 2.0. Jon Tupman Portalsoft Solutions Ltd

Complete Java Web Development

Using weblock s Servlet Filters for Application-Level Security

TypingMaster Intra. LDAP / Active Directory Installation. Technical White Paper (2009-9)

Hello World RESTful web service tutorial

Keycloak SAML Client Adapter Reference Guide

SSC - Web applications and development Introduction and Java Servlet (II)

Configuring IBM WebSphere Application Server 7.0 for Web Authentication with SAS 9.3 Web Applications

Authentication Methods

Apache Roller, Acegi Security and Single Sign-on

The Google Web Toolkit (GWT): Declarative Layout with UiBinder Basics

2011 Marty Hall An Overview of Servlet & JSP Technology Customized Java EE Training:

In this chapter, we lay the foundation for all our further discussions. We start

JBoss SOAP Web Services User Guide. Version: M5

JWIG Yet Another Framework for Maintainable and Secure Web Applications

Deploying RSA ClearTrust with the FirePass controller

Web Application Programmer's Guide

Map Reduce Workflows

Outline. CS 112 Introduction to Programming. Recap: HTML/CSS/Javascript. Admin. Outline

LICENSE4J AUTO LICENSE GENERATION AND ACTIVATION SERVER USER GUIDE

CONTROLLING WEB APPLICATION BEHAVIOR WITH

HBase Java Administrative API

ACI Commerce Gateway Hosted Payment Page Guide

HDFS Installation and Shell

InternetVista Web scenario documentation

Configuring iplanet 6.0 Web Server For SSL and non-ssl Redirect

Forms, CGI Objectives. HTML forms. Form example. Form example...

Java EE 6 New features in practice Part 3

Web Container Components Servlet JSP Tag Libraries

Collax Web Security. Howto. This howto describes the setup of a Web proxy server as Web content filter.

Debugging Ajax Pages: Firebug

Using different Security Policies on Group Level for AD within one Portal. SSL-VPN Security on Group Level. Introduction

Is your data safe out there? -A white Paper on Online Security

An Introduction to Application Security in J2EE Environments

c. Write a JavaScript statement to print out as an alert box the value of the third Radio button (whether or not selected) in the second form.

Intell-a-Keeper Reporting System Technical Programming Guide. Tracking your Bookings without going Nuts!

Development of Object-Oriented Analysis and Design Methodology for Secure Web Applications

New Single Sign-on Options for IBM Lotus Notes & Domino IBM Corporation

Here are the steps to configure Outlook Express for use with Salmar's Zimbra server. Select "Tools" and then "Accounts from the pull down menu.

Using Form Tools (admin)

5. At the Windows Component panel, select the Internet Information Services (IIS) checkbox, and then hit Next.

Configuring Integrated Windows Authentication for JBoss with SAS 9.2 Web Applications

Advanced Java Client API

Programming on the Web(CSC309F) Tutorial: Servlets && Tomcat TA:Wael Aboelsaadat

Agenda. How to configure

IIS, FTP Server and Windows

Course Name: Course in JSP Course Code: P5

Sichere Software- Entwicklung für Java Entwickler

Web Programming II JSP (Java Server Pages) ASP request processing. The Problem. The Problem. Enterprise Application Development using J2EE

Exam Prep. Sun Certified Web Component Developer (SCWCD) for J2EE Platform

Understanding Tomcat Security

T320 E-business technologies: foundations and practice

Integrating LivePerson with Salesforce

NGASI AppServer Manager SaaS/ASP Hosting Automation for Cloud Computing Administrator and User Guide

Implementing the Shop with EJB

NeoMail Guide. Neotel (Pty) Ltd

SAML-Based SSO Solution

Copyright

CORISECIO. Quick Installation Guide Open XML Gateway

Siteminder Integration Guide

Workshop for WebLogic introduces new tools in support of Java EE 5.0 standards. The support for Java EE5 includes the following technologies:

Livezilla How to Install on Shared Hosting By: Jon Manning

Transcription:

2009 Marty Hall Declarative Web Application Security Originals of Slides and Source Code for Examples: http://courses.coreservlets.com/course-materials/msajsp.html Customized Java EE Training: http://courses.coreservlets.com/ Servlets, JSP, Struts, JSF/MyFaces/Facelets, Ajax, GWT, Spring, Hibernate/JPA, Java 5 & 6. Developed and taught by well-known author and developer. At public venues or onsite at your location. 2009 Marty Hall For live Java training, please see training courses at http://courses.coreservlets.com/. coreser com/ Servlets, JSP, Struts, ts JSF, Ajax, GWT, Java 5, Java 6, Spring, Hibernate, JPA, and customized combinations of topics. Taught by the author of Core Servlets and JSP, More Servlets and JSP, and this tutorial. Available at public venues, Customized or customized Java EE Training: versions http://courses.coreservlets.com/ can be held on-site at your Servlets, JSP, Struts, JSF/MyFaces/Facelets, Ajax, GWT, Spring, Hibernate/JPA, Java 5 & 6. organization. Contact hall@coreservlets.com for details. Developed and taught by well-known author and developer. At public venues or onsite at your location.

Agenda Major security concerns Declarative vs. programmatic security Using form-based authentication Steps Example Using BASIC authentication Steps Example 4 Major Issues Preventing unauthorized users from accessing sensitive i data. Access restriction Identifying which resources need protection Identifying who should have access to them Authentication Identifying users to determine if they are one of the authorized ones Preventing attackers from stealing network data while it is in transit. Encryption (usually with SSL) 5

Declarative Security 6 None of the individual servlets or JSP pages need any security-aware code. Instead, both of the major security aspects are handled by the server. To prevent unauthorized access Use the Web application deployment descriptor (web.xml) to declare that certain URLs need protection. Designate authentication method that server uses to identify users. At request time, the server automatically prompts users for usernames and passwords when they try to access restricted resources, automatically checks the results against a server-specific set of usernames and passwords, and automatically keeps track of which users have previously been authenticated. This process is completely transparent to the servlets and JSP pages. To safeguard network data Use the deployment descriptor to stipulate that certain URLs should be accessible only with SSL. If users try to use a regular HTTP connection to access one of these URLs, the server automatically redirects them to the HTTPS (SSL) equivalent. Programmatic Security 7 Protected servlets and JSP pages at least partially manage their own security. Much more work, but totally portable. No server-specific specific piece. Also no web.xml entries needed and a bit more flexibility is possible. To prevent unauthorized access Each servlet or JSP page must either authenticate the user or verify that the user has been authenticated previously. To safeguard network data Each servlet or JSP page has to check the network protocol used to access it. If users try to use a regular HTTP connection to access one of these URLs, the servlet or JSP page must manually redirect them to the HTTPS (SSL) equivalent.

Form-Based Authentication 8 When a not-yet-authenticated user tries to access a protected resource: Server automatically redirects user to Web page with an HTML form that asks for username and password Username and password checked against database of usernames, passwords, and roles (user categories) If login successful and role matches,,page shown If login unsuccesful, error page shown If login successful but role does not match, 403 error given (but you can use error-page and error-code) When an already authenticated user tries to access a protected resource: If role matches, page shown If role does not match, 403 error given Session tracking used to tell if user already authenticated BASIC Authentication 9 When a not-yet-authenticated user tries to access a protected resource: Server sends a 401 status code to browser Browser pops up dialog box asking for username and password, and they are sent with request in Authorization request header Username and password checked against database of usernames, passwords, and roles (user categories) If login successful and role matches, page shown If login unsuccesful or role does not match, 401 again When an already authenticated user tries to access a protected resource: If role matches, page shown If role does not match, 401 error given Request header used to tell if user already authenticated

10 Form-Based Authentication (Declarative Security) 1) Set up usernames, passwords, and roles. Designate a list of users and associated passwords and abstract role(s) such as normal user or administrator. This is a completely server-specific process. Simplest Tomcat approach: use install_dir/conf/tomcat-users.xml: <?xml version="1.0" encoding="iso-8859-1"?> <tomcat-users> <user username="john" password="nhoj" roles="registered-user" /> <user username="jane" password="enaj" roles="registered-user" /> <user username="juan" password="nauj" roles="administrator" /> <user username="juana" password="anauj" roles="administrator,registered-user" /> </tomcat-users> 11 Form-Based Authentication (Continued) 2) Tell server that you are using form-based authentication. i Designate locations of login and login-failure page. Use the web.xml login-config element with authmethod of FORM and form-login-config with locations of pages. <web-app> <login-config> <auth-method>form</auth-method> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/login-error.html</form-error-page> </form-login-config> fi </login-config> </web-app>

Form-Based Authentication (Continued) 3) Create a login page (HTML or JSP) HTML form with ACTION of j_security_check, METHOD of POST, textfield named j_username, and password field named j_password. <FORM ACTION="j_security_check" METHOD="POST"> <INPUT TYPE="TEXT" TEXT NAME="j j_username username"> <INPUT TYPE="PASSWORD" NAME="j_password"> </FORM> For the username, you can use a list box, combo box, or set of radio buttons instead of a textfield. 12 Form-Based Authentication (Continued) 4) Create page for failed login attempts. No specific content is mandated. Perhaps just username and password not found and give a link back to the login page. This can be either an HTML or a JSP document. 13

14 Form-Based Authentication (Continued) 5) Specify URLs to be password protected. Use security-constraint constraint element of web.xml. Two subelements: the first (web-resource-collection) designates URLs to which access should be restricted; the second (auth-constraint) specifies abstract roles that should have access to the given URLs. Using auth-constraint with no role-name means no direct access is allowed. <web-app...> <security-constraint> <web-resource-collection> <web-resource-name>sensitive</web-resource-name> <url-pattern>/sensitive/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>administrator</role-name> <role-name>executive</role-name> </auth-constraint> </security-constraint> <login-config>...</login-config> </web-app> Form-Based Authentication (Continued) 6) List all possible abstract roles (categories of users) that will be granted access to any resource Many servers do not enforce this, but technically required 15 <web-app...>... <security-role> <role-name>administrator</role-name> </security-role> <security-role> <role-name>executive</role-name> </security-role> </web-app>

Form-Based Authentication (Continued) 7) Specify which URLs require SSL. If server supports SSL, you can stipulate that certain resources are available only through encrypted HTTPS (SSL) connections. Use the user-data-constraint subelement of security-constraint. Only full J2EE servers are required to support SSL. <security-constraint> i <user-data-constraint> <transport-guarantee> t t CONFIDENTIAL </transport-guarantee> </user-data-constraint> </security-constraint> 16 Form-Based Authentication (Continued) 8) Turn off the invoker servlet. You protect certain URLs that are associated with registered servlet or JSP names. The http://host/prefix/servlet/name format of default servlet URLs will probably not match the pattern. Thus, the security restrictions are bypassed when the default URLs are used. Disabling it In each Web application, redirect requests to other servlet by normal web.xml method <url-pattern>/servlet/*</url-pattern> Globally Server-specific mechanism (e.g. install_dir/conf/server.xml for Tomcat). 17

Example: Form-Based Security 18 Example: Step 1 Set up usernames, passwords, and roles. install_dir/conf/tomcat-users.xml <?xml version="1.0" encoding="iso-8859-1"?> <tomcat-users> <user username="john" password="nhoj" roles="registered-user" /> <user username="jane" password="enaj" roles="registered-user" /> <user username="juan" password="nauj" roles="administrator" i /> <user username="juana" password="anauj" roles="administrator,registered-user" /> <!-- --> </tomcat-users> 19

Example: Step 2 20 Tell server that you are using form-based authentication. i Designate locations of login and login-failure page. <login-config> <auth-method>form</auth-method> <form-login-config> <form-login-page> /admin/login.jsp </form-login-page> <form-error-page> /admin/login-error.jsp </form-error-page> </form-login-config> </login-config> Example: Step 3 21 Create a login page <BODY> <TABLE BORDER=5 ALIGN="CENTER"> <TR><TH CLASS="TITLE">Log In</TABLE> <P> <H3>Sorry, you must log in before accessing this resource.</h3> <FORM ACTION="j_security_check" METHOD="POST"> <TABLE> <TR><TD>User name: <INPUT TYPE="TEXT" NAME="j_username"> <TR><TD>Password: <INPUT TYPE="PASSWORD" NAME="j_password"> <TR><TH><INPUT TYPE="SUBMIT" VALUE="Log In"> </TABLE> </FORM></BODY></HTML>

Example: Step 3 (Result) 22 Example: Step 4 Create page for failed login attempts. <BODY> <TABLE BORDER=5 ALIGN="CENTER"> <TR><TH CLASS="TITLE">Begone!</TABLE> <H3>Begone, ye unauthorized peon.</h3> </BODY> </HTML> 23

Example: Access Rules Home page Anyone Investing page Registered users Administrators Stock purchase page Registered users Via SSL only Delete account page Administrators 24 Example: Step 5 Specify URLs to be password protected. 25 <!-- Protect everything within the "investing" directory. --> <security-constraint> <web-resource-collection> <web-resource-name>investing </web-resource-name> <url-pattern>/investing/*</url-pattern> </web-resource-collection> collection> <auth-constraint> <role-name>registered-user</role-name> <role-name>administrator</role-name> </auth-constraint> </security-constraint>

Example: Step 5 (Continued) <!-- Only users in the administrator role can access the delete-account.jsp page within the admin directory. --> <security-constraint> constraint> <web-resource-collection> <web-resource-name>account Deletion </web-resource-name> <url-pattern>/admin/delete-account.jsp </url-pattern> </web-resource-collection> <auth-constraint> <role-name>administrator</role-name> </auth-constraint> </security-constraint> 26 Example: Step 5 (Results) First attempt to access account status page Result of successful login and later attempts to access account status page 27

Example: Step 6 6) List all possible abstract roles (types of users) that will be granted access to any resource <web-app...>... <security-role> role> <role-name>registered-user</role-name> </security-role> <security-role> <role-name>administrator</role-name> </security-role> </web-app> 28 Example: Step 7 Specify which URLs require SSL. 29 <!-- URLs of the form http://host/webappprefix/ssl/blah require SSL and are thus redirected to https://host/webappprefix/ssl/blah. --> <security-constraint> <web-resource-collection> <web-resource-name>purchase </web-resource-name> <url-pattern>/ssl/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>registered-user</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>confidential </transport-guarantee> </user-data-constraint> </security-constraint>

Example: Step 7 (Results) http://host/prefix/ssl/buy-stock.jsp or https://host/prefix/ssl/buy-stock.jsp / / kj 30 Example: Step 8 Turn off the invoker servlet <!-- Turn off invoker. Send requests to index.jsp. --> <servlet-mapping> <servlet-name>redirector</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> i l l </welcome-file-list> 31

Example: Step 8 (Continued) /** Servlet that simply redirects users to the * Web application home page. */ public class RedirectorServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.sendredirect(request.getcontextpath()); sendredirect(request } } public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { doget(request, response); } 32 Example: Step 8 (Results) Attempt to access http://host/hotdotcom/servlet/anything /h / /A hi 33

34 Form-Based vs. BASIC Authentication Advantages of form-based Consistent t look and dfeel Fits model users expect from ecommerce sites Disadvantage of form-based Can fail if server is using URL rewriting for session tracking. Can fail if browser has cookies disabled. Advantages of BASIC Doesn't rely on session tracking Easier when you are doing it yourself (programmatic) Disadvantage of BASIC Small popup dialog box seems less familiar to most users Other auth-method options CLIENT-CERT (X 509 certificates) DIGEST (Not widely supported by browsers) BASIC Authentication 1. Set up usernames, passwords, and roles. Same as for form-based authentication. Server-specific. 2. Tell the server that you are using BASIC authentication. Designate the realm name. Use the web.xml login-config element with an auth-method subelement of BASIC and a realmname subelement (generally used as part of the title of the dialog box that the browser opens). <login-config> <auth-method>basic</auth-method> <realm-name>some Name</realm-name> </login-config> 35

BASIC Authentication (Continued) 3. Specify which URLs should be password protected. Same as with form-based authentication. 4. List all possible roles (categories of users) that will access any protected resource Same as with form-based authentication 5. Specify which URLs should be available only with SSL. Same as with form-based authentication. 6. Turn off the invoker servlet. Same as with form-based authentication. 36 Example: BASIC Authentication Home page Anyone Financial plan Employees or executives Business plan Executives only 37

Example: BASIC Authentication (Step 1) Set up usernames, passwords, and roles. <?xml version="1.0" encoding="iso-8859-1"?> <tomcat-users> <user username="gates" password="llib" roles="employee" /> <user username="ellison" password="yrral" roles="employee" /> <user username="mcnealy" password="ttocs" roles="executive" /> </tomcat-users> 38 Note: file that contains these passwords and those of declarative example is online at http://archive.moreservlets.com/security-code/tomcat-users.xml Example: BASIC Authentication (Step 2) Tell the server that you are using BASIC authentication. i Designate the realm name. <login-config> <auth-method>basic</auth-method> <realm-name>intranet</realm-name> </login-config> 39

40 Example: BASIC Authentication (Step 3) Specify which URLs should be password protected. <security-constraint> <web-resource-collection> <web-resource-name> Financial Plan </web-resource-name> <url-pattern> /financial-plan.html </url-pattern> </web-resource-collection> <auth-constraint> <role-name>employee</role-name> <role-name>executive</role-name> </auth-constraint> </security-constraint> Example: BASIC Authentication (Step 3 Continued) <security-constraint> <web-resource-collection> <web-resource-name> Business Plan </web-resource-name> <url-pattern> /business-plan.html </url-pattern> </web-resource-collection> <auth-constraint> <role-name>executive</role-name> e e ecut e o e a e </auth-constraint> </security-constraint> 41

Example: BASIC Authentication (Step 4) <web-app...>... <security-role> <role-name>employee</role-name> </security-role> <security-role> <role-name>executive</role-name> </security-role> role> </web-app> 42 Example: BASIC Authentication (Results) First attempt For business plan Failed login User not found Denied User not in executive role Success User in executive role You can use the errorpage and error-code elements to define custom pages status code 403. See lecture on web.xml. 43

Summary 44 Main security issues Preventing access by unauthorized users Preventing attackers from stealing network data Declarative security Much less work than programmatic security Requires server-specific password setup Form-based authentication Attempts to access restricted resources get redirected to login page. HTML form gathers username and password. Session tracking tracks authenticated users. BASIC authentication Attempts to access restricted resources results in dialog box. Dialog gathers username and password. HTTP headers track authenticated users. 2009 Marty Hall Questions? Customized Java EE Training: http://courses.coreservlets.com/ Servlets, JSP, Struts, JSF/MyFaces/Facelets, Ajax, GWT, Spring, Hibernate/JPA, Java 5 & 6. Developed and taught by well-known author and developer. At public venues or onsite at your location.