如何保护(使用 Java 代码加密)将重定向到 servlet 的登录表单的值



我对向servlet发送安全数据(在发送请求之前加密(有安全问题。我尝试调用对密码进行加密的函数作为示例,但我无法将值从 Java 脚本传递到 JSP 中的 Java 代码。

<script>
	function login() {
		var password = document.getElementsByName("newPassword");
		console.log(password);
	}
</script>
</head>
<body>
	<form class="login" action="servlet example" method="Post">
		<h1 class="login-title">BSH Login</h1>
		<h3><%=request.getAttribute("message") != null ? request.getAttribute("message") : ""%></h3>
		<input type="text" class="login-input" name="username"
			placeholder="Bsh UserName" autofocus> <input type="password"
			name="passowrd" class="login-input" placeholder="Password"> <input
			type="submit" value="Login" onclick="login()" class="login-button">
	</form>
</body>

我非常需要将加密数据从JSP发送到没有HTTPS的servlet。

正确(也可能是唯一(的解决方案是使用 HTTPS。 这将与服务器建立安全连接以发送登录请求。 由于通过HTTPS连接发送的所有数据都是加密的,因此不需要对密码进行额外的加密。


假设您想使用非安全连接(即HTTP而不是HTTPS(。 是否可以使用加密来发送密码...安全?

我认为答案是否定的。

在这种情况下,让 Alice 成为用户,Bob 成为服务器,Carol 是尝试拦截密码的人/代理。

假设 Alice 发送一个 HTTP 请求来获取登录页面,Bob 使用一个包含一些嵌入式 Javascript 的页面进行响应,该页面将加密用户的密码。 鲍勃的javascript甚至可以使用公钥加密,以便Carol1可以解密密码...尽管知道加密密钥。 (你会认为...

不幸的是,它并不安全。 问题是鲍勃以明文形式将包含您的javascript的页面发送到Alice的Web浏览器。 Carol 可以使用已知的网络黑客技术来更改 Bob 的响应,以便 Alice 获得的页面具有不同版本的 JavaScript。 此版本可能会以明文形式发送密码,或者可能使用其他公钥对其进行加密。 这将导致爱丽丝无法登录。 但是,如果Carol也可以看到登录请求(因为这也是通过HTTP发送的(,那么她可以获取Alice的密码。 事实上,Carol 可以强制通过 HTTP 发送请求。

这是"中间人"(MITM(安全攻击的一个例子。

简而言之,如果您不通过HTTPS进行整个交换,则登录页面中嵌入的任何安全机制都可能被破坏。

使用基于 Web 的请求时。我建议使用JSON Web Tokens,可以在这里找到:https://jwt.io。

该程序/工具将允许您嵌入加密数据并在发送和接收(尤其是接收(后验证数据。随意阅读文档并在Javascript或Java框架中实现它。

你的问题不是很清楚。

如果要将任何凭据(或通常的任何凭据(从客户端发送到服务器,唯一的选择是https。

但是,如果您要将一些数据从 jsp 传递到 servlet,则内部请求调度程序在本地是安全的,并且与客户端没有处理。 但是,如果重定向网关之间,因为需要客户端重定向调用,因此仍然需要 HTTPS。

最新更新