Если вы просто передадите JSON (зашифрованный, скажем, из-за использования https-соединения), вы исключите риск выполнения произвольного кода, свойственный методу pickle. И вы можете проверить данные перед их использованием. Вам просто нужно беспокоиться о том, чтобы принимать данные от кого-то (и это касается аутентификации), которому разрешено общаться с вами.
Вы можете настроить сериализацию JSON, если она не поддерживает требуемый тип.
Обмен JSON довольно распространен, например, для API REST.
Это выглядит безопасно (хотя я не эксперт по безопасности) и намного проще.