Git Product home page Git Product logo

codeu_project_2018's Introduction

CodeU Example Project

This is an example chat application. It's complete and functional, but leaves plenty of room for improvement.

Step 1: Download Java

Check whether you already have Java installed by opening a console and typing:

javac -version

If this prints out a version number, then you already have Java and can skip to step 2. If the version number is less than javac_1.8, then you have an old version of Java and should probably upgrade by following these instructions.

Download the JDK (not the JRE) from here.

Retry the javac -version command in a new console window to check the installation. If you still don't see a version number, then update your PATH environment variable so it contains Java's bin directory. Follow these directions to do so.

Step 2: Download Maven

This project uses Maven to compile and run our code. Maven also manages dependencies, runs the dev server, and deploys to App Engine.

Download Maven from here. Unzip the folder wherever you want.

Make sure you have a JAVA_HOME environment variable that points to your Java installation, and then add Maven's bin directory to your PATH environment variable. Instructions for both can be found here.

Open a console window and execute mvn -v to confirm that Maven is correctly installed.

Step 3: Install Git

This project uses Git for source version control and GitHub to host our repository.

Download Git from here.

Make sure Git is on your PATH by executing this command:

git --version

If you don't see a version number, then make sure Git is on your PATH.

Step 4: Setup your repository

Follow the instructions in the first project to get your repository setup.

Step 5: Run a development server

In order to test changes locally, you'll want to run the server locally, on your own computer.

To do this, open a console to your codeu_project_2018 directory and execute this command:

mvn clean appengine:devserver

This tells Maven to clean (delete old compiled files) and then run a local App Engine server.

You should now be able to use a local version of the chat app by opening your browser to http://localhost:8080.

Step 6: Make a change!

  • Bring down the existing server by pressing ctrl+c in the console running the App Engine devserver.
  • Modify a .java or .jsp file. (Try updating the homepage by editing the index.jsp file.)
  • Bring the devserver back up by executing mvn clean appengine:devserver again.
  • Refresh your browser to see your changes!

codeu_project_2018's People

Contributors

dhgarrette avatar kevinworkman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

codeu_project_2018's Issues

User controlled redirection

Use user-controlled values directly as redirect addresses on lines 112 and 120

String conversationTitle = request.getParameter("conversationTitle");
if (!conversationTitle.matches("[\\w*]*")) {
request.setAttribute("error", "Please enter only letters and numbers.");
request.getRequestDispatcher("/WEB-INF/view/conversations.jsp").forward(request, response);
return;
}
if (conversationStore.isTitleTaken(conversationTitle)) {
// conversation title is already taken, just go into that conversation instead of creating a
// new one
response.sendRedirect("/chat/" + conversationTitle);
return;
}
Conversation conversation =
new Conversation(UUID.randomUUID(), user.getId(), conversationTitle, Instant.now());
conversationStore.addConversation(conversation);
response.sendRedirect("/chat/" + conversationTitle);

Reflective XSS

The username is not secure and is used in the JSP

String username = request.getParameter("username");
String password = request.getParameter("password");
if (!userStore.isUserRegistered(username)) {
request.setAttribute("error", "That username was not found.");
request.getRequestDispatcher("/WEB-INF/view/login.jsp").forward(request, response);
return;
}
User user = userStore.getUser(username);
if (!BCrypt.checkpw(password, user.getPasswordHash())) {
request.setAttribute("error", "Please enter a correct password.");
request.getRequestDispatcher("/WEB-INF/view/login.jsp").forward(request, response);
return;
}
request.getSession().setAttribute("user", username);
response.sendRedirect("/conversations");

<a>Hello <%= request.getSession().getAttribute("user") %>!</a> in about.jsp,chat.jsp,conversations.jsp,index.jsp,login.jsp,register.jsp

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.