Параметр запроса шифрования в JS на стороне клиента, Параметр запроса расшифровки в Java (Spring Controller) - PullRequest
0 голосов
/ 25 сентября 2019

Мне нужно вызвать URL-адрес со стороны клиента (JS) с зашифрованным параметром.Затем мне нужно расшифровать URL-адрес от контроллера на стороне сервера, к которому он идет.

Предположим, у меня есть window.location.href = "/app/submitted?docId=445";

Мне нужно зашифровать часть docId=445.Я мог бы использовать atob/btoa как

window.location.href = "/app/submitted?" + atob("docId=445"); // Whole Param
window.location.href = "/app/submitted?docId=" + atob("445"); // Just the value

Я бы предпочел # 1, но в обоих случаях, когда я прихожу к своему контроллеру SpringMVC, как я могу получить и расшифровать этот параметр?Существует ли Java-шифрование, эквивалентное atob/btoa?

@GetMapping("/app/submitted")
public ModelAndView  submitted(HttpServletRequest request, HttpServletResponse response, 
        @RequestParam("docId") Integer docId) {
      //...
      // How to decrypt here (either whole param or just the value) from an atob/btoa?

}

Или я должен использовать здесь шифрование, а не шифрование, чтобы гарантировать эквивалентность на обоих уровнях?Моя цель - не показывать идентификатор в адресной строке.

1 Ответ

0 голосов
/ 25 сентября 2019

Я думаю, что вы запрашиваете кодирование / декодирование base64 на стороне сервера - и да, Java, безусловно, может это сделать

@GetMapping("/app/submitted")
public ModelAndView  submitted(HttpServletRequest request, HttpServletResponse response, 
    @RequestParam("docId") String docId) {
  //...
  byte[] decodedDocIdBytes = Base64.getDecoder().decode(docId);
  String decodedDocIdAsString = new String(decoodDocIdBytes);

 }

Обратите внимание, что docId был изменен на String.

В качестве дополнительного примечания: код base64 не является шифрованием, поэтому, если вы действительно хотите сохранить секрет docId, я бы искал другой подход.Если это API REST (ish), то идентификаторы ресурса (docIds) не должны иметь никакого внешнего значения, поэтому не должно быть требования их скрывать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...