注意, Web 应用程序是用 Java 而不是 .NET 或者 PHP 编写的,所以将这两个从报告中去掉,您不需要知道如何修正那些语言中的问题。
图 31. 创建一个报告
点击 Layout,如图 32 所示,使您能够定义报告的外观,并且添加公司商标或者任何其他的页面内容。实际应用中往往在页脚处添加 Company Confidential。您也应当将这些报告注明为高度敏感的信息。
图 32. 报告
选择 Save 并且为您的报告命名,如图 33 中所示。
图 33. 保存并命名您的报告
高效率创建安全的Java应用, 第2部分(15)
时间:2012-01-14 IBM David Whitelegg
您的报告已经被保存为 PDF 格式的文件。
至此,您的报告可以提供给开发人员了。在这个例子中,开发人员正是您自己!所以,您需要通过报告发现并且修改您的 Java Web 应用程序代码。
修正 Java 代码
至此,您应当已将较好地理解了什么内容需要修正,以及如何修正。现在,我们来修正代码中的安全性缺陷。
打开 Rational 应用程序开发器,并且按照加粗字体(如列表 3 中所示)对代码进行更改,或者您也可以将下面的代码段复制粘贴过去。
列表 3. 通过最初的新的网络服务器上的会话和有效性检查更新 login.jsp 文件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<jsp:useBean id="users" class="com.ibm.ds.users.UsersDataImpl" scope="page" />
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@page import="com.ibm.ds.users.Users" %>
<%@page import="pureQuery.example.*" %>
<%@page import="com.ibm.pdq.runtime.*" %>
<%@page import="java.util.regex.*" %>
<html>
<head>
<title>login</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Rational Application Developer">
</head>
<body>
<h1>Login</h1>
<%
String userid = request.getParameter("userid");
String password = request.getParameter("password");
session.invalidate();
session = request.getSession(true);
session.setAttribute("userid", userid);
if(request.getMethod().equals("POST")){
boolean matchu = false;
boolean matchp = false;
if(userid != null && !userid.equals("") &&
password != null && !password.equals("")){
Pattern input = Pattern.compile("[a-zA-Z0-9]*");
Matcher m = input.matcher(userid);
matchu = m.matches();
input = Pattern.compile("[a-zA-Z0-9]*");
m = input.matcher(password);
matchp = m.matches();
}
if(matchu && matchp && (userid != null &&
!userid.equals("")) &&
(password != null && !password.equals("&qu
|