Я не уверен, что это обеспечивает какую-либо безопасность. Если злоумышленник в середине хочет изменить параметры, все, что он должен сделать, это изменить строку запроса, пересчитать хэш SHA-1 и отправить этот запрос на сервер.
Например, URL, отправленный браузером, может быть:
http://www.example.com/addUser.html?parameterA=foo&hash=SHA1("parameterA=foo")
Если злоумышленник перехватит это, он может отредактировать его следующим образом:
http://www.example.com/adduser.html?parameterA=bar&hash=SHA1("parameterA=bar")
Действительно, это сводится к тому, что вы можете доверять хешу только столько, сколько самим параметрам.
Один из способов исправить это было бы, если бы у пользователя был пароль, который известен только им и серверу, тогда злоумышленник не сможет пересчитать хэш, если они изменят параметры. Например:
http://www.example.com/addUser.html?parameterA=foo&hash=SHA1("parameterA=foo"+"theuserpassword")
Но не указывайте пароль в качестве одного из параметров в URL:)
Важно отметить, что это не современный уровень для проверки целостности сообщений, передаваемых между двумя сторонами. Сегодня используется форма алгоритма кода аутентификации сообщений (HMAC) на основе хеша, которая довольно хорошо описана в HMAC и, безусловно, в RFC2104 и FIPS Pub 198-1 .