gpt4 book ai didi

java - 如何使用网站的数据库连接到服务器,使用 GET 更安全

转载 作者:可可西里 更新时间:2023-11-01 08:35:01 26 4
gpt4 key购买 nike

我有一个java服务器,我想使用我论坛的用户详细信息连接到我的服务器。

但是有个问题。

我用的是Xenforo,我不太了解xenforo的算法。是的,我想通了,这是

public static String encryptPassword(String password) {
return sha1(sha1(password)+theSalt);
}

xenforo 中的盐是 $salt,但我已经检查过,Xenforo 为每个用户生成了一个新的盐。加密密码,它如何找到加密,如果我没记错的话,xenforo 有 70 多个类。

Sha1(sha1 $password 是对的,salt 是错的。

我放弃了,制作了一个 php 文件,用于检查登录详细信息是否在 Web 端正确(使用 Xenforo 的功能)。

<?php
$startTime = microtime(true);
//FULL PATH.
require('/var/www/mydir/forums/library/XenForo/Autoloader.php');
XenForo_Autoloader::getInstance()->setupAutoloader('/var/www/mydir/forums/library');

XenForo_Application::initialize('/var/www/mydir/forums/library');
XenForo_Application::set('page_start_time', $startTime);

//Crypt code you set for your login, if you dont have it, then just comment $crypt out, but this is VERY useful agaisnt brute forces.
$crypt = $_POST['crypt'];

if (isset($_POST['username']) && isset($_POST['password']) && $crypt === 911895326) {

//Username you're posting from server.
$username = $_POST['username'];
//Password you're posting from server.
$password = $_POST['password'];

$db = XenForo_Application::getDb();

$data = $db->fetchOne('
SELECT
auth.data
FROM xf_user_authenticate AS auth
INNER JOIN xf_user AS user ON
(user.user_id = auth.user_id)
WHERE user.username = ?
', $username);

//Gets the auth from Xenforo classes
$auth = XenForo_Authentication_Abstract::createDefault();

$auth->setData($data);

//Checks if equal through the hash
$check = $auth->authenticate($username, $password);

//dump for testing (true/false)
Zend_Debug::dump($check);

/* CHECKING METHOD */

//Checks if login details are equal to the ones that are in the database.
if ($check) {
//Prints "Success" string, so you can check in java if the printed string is that, if yes, then create login.
echo 'Success';
} else {
echo 'Failed';
}
}

?>

Java 服务器将通过 GET 方法发送类似这样的内容:

http://yourwebsite.com/password.php?crypt=123456789&username=jony&password=1234567

然后 PHP 将检查密码是否正确、用户是否匹配以及密码是否匹配。

如果详细信息正确,系统将打印“true”。从 Java 服务器我可以检查该页面上是否有一个名为“true”的字符串。如果是,创建登录,如果不是,报错。

有些人告诉我这非常不安全,您可以使用 wireshark 程序获取 URL,然后使用该 url 暴力破解密码。

这是真的吗?这种方法不安全吗?

除此之外还有其他选择,还是直接从数据库中匹配密码?或者对这种方法有什么改进吗? :

public class letLogin {

private static final string CRYPTION_ID = 'faCuGujuF32XaNeWr3t7';
private static final String WEBSITE_DOMAIN = "http://yourwebsite.com/";

public static int processUser(Client client){
try {
String URL = WEBSITE_DOMAIN + "loginProtocol.php?crypt=" + CRYPTION_ID + "&name="+client.playerName.toLowerCase().replace(" ","_")+"&pass="+client.playerPass;
HttpURLConnection CONNECTION_HANDLE = (HttpURLConnection) new URL(URL).openConnection();
BufferedReader OUTPUT_HANDLE = new BufferedReader(new InputStreamReader(CONNECTION_HANDLE.getInputStream()));
String OUTPUT_DATA = OUTPUT_HANDLE.readLine().trim();
try {
if (!OUTPUT_DATA.contains("success"))
return 3;

} catch(Exception e){
System.out.println("Web server not responding for query: " +OUTPUT_DATA);
return 8;
}
} catch(Exception e2){ }
return 2;
}
}

谢谢!

最佳答案

首先,您不会在传递变量时获取变量GET 但你在 POST 中得到它们。如果使用 GET 是不安全的,我不需要使用 wireshark,我可以通过查看你的浏览器历史记录来知道你的密码....我不知道 XenForo,但我的偏好是:sha1 原始密码-> 发布用户名和加密密码-> 使用该密码和数据库中的密码检查哈希

关于java - 如何使用网站的数据库连接到服务器,使用 GET 更安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15606849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com