Предыдущие несколько эссе о сервлетах разобрались с простым процессом использования сервлетов. Следующая статья будет в основном сосредоточена на интерфейсе доступа к мобильным приложениям, передачи шифрования MD5 -----> Проверка SMS ---> Мобильный толкатель ---> Обмен ---> Облачная карта Baidu ----> Платеж ... Сторонний бизнес ... Поскольку я новичок, я также узнаю и пишу во время изучения, и я надеюсь понять недостатки.
Сегодняшняя статья в основном включает в себя шифрование данных о передаче Javaservlet, комбинацию параметров запроса клиента, и будет сопровождаться всеми проблемами, с которыми я столкнулся в середине и решения.
Поскольку опубликован интерфейс доступа к мобильному телефону, независимо от того, какой язык написан интерфейс, мы должны принимать соответствующие меры безопасности. В противном случае, после того, как люди узнают ваш URL, перехватите запрос клиента, а затем измените параметры представления, что приведет к большим потерям. Наиболее часто используемый интерфейс Сервлета также должен шифровать передаваемые данные. Если он написан с помощью Webservice .net WCF и других технологий, он также будет включать в себя сопоставление сертификатов ...
1. Идеи для шифрования и реализации запрошенных параметров данных.
Шифрование здесь я использую 32-битное шифрование MD5. 32-битный-необратимое шифрование. Таким образом, даже если он перехвачен хакером, невозможно расшифровать значение MD5, которое мы зашифровали в строку, объединенную при шифровании. Конечно, это не абсолютно. Похоже, что некоторые компьютерные эксперты расшифровали метод шифрования MD5 за последние несколько лет, но я думаю, что технология не может быть опубликована по желанию по желанию, и даже если она будет объявлена, это не то, что обычные люди могут понять. В противном случае, если вы просто спросите программиста, вы все еще используете шифрование MD5? Ответ определенно не больше.
1. Прежде всего, позвольте мне поговорить о комбинации параметров моего запроса. Поскольку это включает в себя шифрование MD5, мы должны обращать на себя обратную связь с двумя токенами после того, как пользователь входит в учетную запись, используя приложение. Первый токен - единственное значение, указывающее на личность пользователя. Этот токен должен быть добавлен в параметр интерфейса запроса (независимо от того, участвует ли этот параметр в шифровании, вы должны определить, участвует ли он в шифровании. Я участвовал здесь), потому что сервлет должен запросить шифрование пользователя, необходимое для запроса шифрования пользователя. Второй токен используется для шифрования значения MD5. Этот токен не может быть добавлен в параметры интерфейса запроса, и мы должны сохранить оба токена в базе данных, потому что после того, как пользователь запрашивает интерфейс, сервлету необходимо получить токен пользователя в параметрах, а затем запросить токен, необходимый для шифрования MD5 в базе данных. Затем сервлет затем добавляет зашифрованные токены из запроса к строке, переданной пользователем, и снова выполняет шифрование MD5. После шифрования сравните зашифрованное значение MD5, зашифрованного пользователем. То же самое, что зашифрованное значение сервлета. Если это другое, то может быть две причины. Комбинация строк шифрования на стороне сервлета неверна, и пользователь перехватил и модифицирован в середине передачи данных. Я использовал оба токена, чтобы сгенерировать их с помощью java uuid, и то, что следует генерировать для Uuid, является уникальным значением. Метод генерации очень прост. Ниже приведен код
public static String getUuiD () {return uuid.randomuuid (). toString (); }Ниже приведен 32-битный метод шифрования Java MD5
Public Static String Md5encrypt (String Groupparamertstr) бросает UnsupportedEncodingException {MessageDigest MessagedIgest = null; try {messagegest = messagegest.getinstance ("md5"); MessageDigest.Reset (); MessageDigest.update (Groupparamertstr.getBytes ("utf-8")); } catch (nosuchalgorithmexception e) {System.out.println ("nosuchalgorithmexception пойман!"); System.Exit (-1); } catch (unsupportEncodingexception e) {e.printstacktrace (); } byte [] bytearray = messagedigest.digest (); StringBuffer md5strbuff = new StringBuffer (); for (int i = 0; i <bytearray.length; i ++) {if (integer.tohexstring (0xff & bytearray [i]). length () == 1) md5strbuff.append ("0"). Append (integer.tohexstring (0xff & styearray [i]); else md5strbuff.append (integer.tohexstring (0xff & bytearray [i])); } return md5strbuff.toString (); } Ниже приводится сравнение результатов шифрования с результатами шифрования, передаваемых пользовательским запросом после получения параметров на сервлете. Если то же самое означает, что запрос в порядке, в противном случае значение параметра запроса может быть изменено
// Следующие три параметра являются токеном пользователя. Второй - параметр, необходимый для шифрования. После того, как мы запросили зашифрованный токен через токен пользователя, нам нужно объединить его в строку JSON, необходимую для шифрования сервлета. Третий - это строка результатов шифрования, отправленная от клиента. Здесь метод возвращает 0, чтобы указать, что нет проблем с результатом шифрования пользователя, в противном случае существует ошибка, публичная статическая int posttokenverify (string token, jsonobject requestjsonobject, строка incryptStrvalue) {int returnValue = 0; String [] mysqlParameter = new String [] {token}; // Следующее запрашивает токен шифрования пользователя через пользовательский токен результаты returnData = mysqlHepler.executequery («select * from infosheet, где idtoken =?», MySqlParameter); JsonObject returnObject = null; try {returnObject = resultTojSontool.ResultSettoJsonObject (returnData); } catch (sqlexception e1) {// todo автоматически сгенерированный блок e1.printstacktrace (); } catch (jsonexception e1) {// todo автоматически сгенерированный блок e1.printstacktrace (); } String byencryptStrvalue = ""; try {if (returnobject.getString ("encrypttoken"). length ()> 2) {// Укажите, что идентификатор пользователя существует, // returnValuesting; // {"idtoken": "123456", "id": "34", "pwd": "23", "Encrypttoken": "2345678", "Accourt": "Hang"} /*Следующий код сочетается с шифрованием javamd5, потому что прикованной щит, но прикованной щит, но прикованной щит. не может быть принят во время запроса. Поэтому, когда мы зашифровали сервлет, нам нужно запросить зашифрованный пользователь через токен пользователя. После того, как запрос будет найден, нам необходимо развязать его и запросить параметр json, чтобы зашифрованная строка сервлета соответствовала строке, зашифрованной пользователем. Ниже приведен метод запроса зашифрованного токена и объединения его в параметрах запроса после запроса зашифрованного токена. */ byencryptStrvalue = requestJsonObject.toString (). substring (0, requestJsonObject.toString (). Length ()-1); JsonObject encrypttokenjsonObject = new jsonObject (); encrypttokenjsonobject.put ("encrypttoken", returnobject.getString ("encrypttoken")); String value1 = encrypttokenjsonobject.tostring (). Substring (1, encrypttokenjsonobject.toString (). Length ()); ByencryptStrvalue = byencryptStrvalue+","+value1; //} else {returnValue = 1; // IDTOKER ERROUS}} CATCH (JSONEXCEPTION E1) {// TODO AUTO GENTERED BLOCK E1.PRINTSTACKTRACE (); } try {// Следующий метод - использовать правильную строку, чтобы зашифровать вызов метода на сервлете. После возвращения результата сравните результат шифрования, переданный пользовательской строкой javamd5result = incryptsafa.md5encrypt (byencryptstrvalue); if (javamd5result.equals (encryptStrvalue)) {// Строка шифрования верна} else {returnValue = 2; // Результат шифрования неверно}} Catch (UnsupportEncodingException e) {// todo Auto Generated Catch Block E.printStackTrace (); } returnValue; }Первый - это инкапсулированный метод, вызванный сервлетом. Ниже приведены все коды, называемые страницей сервлета.
1. Запрашиваемый URL
Здесь я передаю словарь, чтобы преобразовать параметр формата JSON, который представляет собой форму пары ключей, и для его запроса используется только один параметр. Idtoken в параметре - это токен пользователя, а значение, которое я добавляю, является случайным 123456 в базе данных.
Если вы не используете UUID, конечно, это определенно не будет, если вы сделаете это формально.
http: // localhost: 8080/javaservlettest/2.jsp? parameter = {"parameter": "{/" idtoken/":/" 123456/",/" pwd/":/" Китайский символы/",/" Account/":/" Hang/"}", "MD5STR": "672F4A8C6FB92103C01D4275E46DF790"}
Ниже приведен код, обработанный страницей сервлета. Весь процесс состоит в том, чтобы проверить, был ли запрос пользователя изменен во время доставки.
// вчера я столкнулся здесь с проблемой. Когда я попросил параметры с китайцем, сервлет был искажен после получения сервлета, а затем я использовал следующий метод. String requestJSonstr = new String (request.getParameter ("parameter"). GetBytes ("iso8859-1"), "UTF-8"); // отправить параметры jsonObject objectParameter = null; // idtoken jsonObject requestParmeter = null; // idtoken string idtoken = ""; // Строка шифрования клиента md5str = ""; Попробуйте {// Получить общую строку JSON. Это на самом деле тот параметр объекта ParationParameter, который мы проходим только из url.objectparameter = new jsonobject (requestJsonstr); // Отправить параметр, значение ключа JSON и запросить параметр внутри параметра. Фактически, этот параметр содержит требуемые параметры в бизнесе, такие как requestParmeter = new JsonObject (objectParameter.getString («Параметр»)); // Idtoken Это токен пользователя, который является уникальным идентификатором пользователя. Нам нужно запросить соответствующий зашифрованный токен в базе данных через него, чтобы запросить iDtoken = requestParmeter.getString ("iDtoken"); // Строка шифрования клиента md5str = objectParameter.getString ("md5str"); } catch (jsonexception e1) {// todo автоматически сгенерированный блок e1.printstacktrace (); } // Строка, сгенерированная после шифрования MD5 // Следующим шагом является проверка того, является ли токен правильным int tokenverifyResult = incryptsafa.posttokenverify (iDtoken, requestParmeter, md5str); if (tokenverifyResult == 0) {out.println ("Метод шифрования токена является правильным"); } else {out.println ("Зашифрованный токен или ошибка метода шифрования"); возвращаться; }Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.