2010-11-25 4 views
0

В настоящее время я использую base64_encode для некоторых параметров $ _GET, которые я не хочу, чтобы обычный пользователь возился. Мне было интересно, что base64 не выглядит слишком сильным или не так ли?

Я также не хочу делать какую-то мега кодировку, это не столько важная информация, но я бы не хотел, чтобы этот пользователь со средним знанием возился с параметрами get.

Должен ли я использовать base64? В настоящее время он производит MQ==, если значение равно 1, поэтому довольно легко извлечь его из URL и декодировать, а затем вставить свой собственный.

ответ

2

Если вы хотите, чтобы какое-то настоящее шифрование/дешифрование взглянули на функции Mcrypt в PHP. http://www.php.net/manual/en/mcrypt.examples.php

Но тогда вы можете использовать POST вместо GET из-за спецификаций URL, которые ограничены в использовании символов и длине URL.

3

base64_encode()is not a security measure! Он был разработан для обеспечения возможности отправки бинарных капель с помощью носителей, которые обычно передают только ASCII.

Используйте сеанс или правильно зашифруйте свои переменные.

Я бы рекомендовал только с помощью сеанса и сохранения его из умолчанию /tmp для хорошей мерой с ...

ini_set('session.save_path', '/sessions'); 
+0

Я не хочу скрывать значения для меры безопасности. Я просто хочу преобразовать его в то, что обычный пользователь сети не поймет и не может редактировать это. – arma 2010-11-25 12:54:47

+0

@arma Я обычный пользователь сети, который может редактировать ваши значения. Я вижу, что у строки есть шаблон, подобный `1AzJjKosS97Zj`, и сделать хорошее предположение, что он кодируется базой 64. Тогда я мог бы легко декодировать его, изменить его и перекодировать и отправить как параметр GET. – alex 2010-11-25 12:55:50

+0

@arma: если вы не хотите, чтобы пользователи редактировали строку, вам нужна мера безопасности – stillstanding 2010-11-25 12:56:59

4

Base-64 encoding не защищает данные в любом случае. Это просто базовое преобразование, такое как использование шестнадцатеричного, а не десятичного для целых чисел.

Если вы хотите проверить только data integrity, вы можете использовать соленый хэш (с секретной солью), который вы храните вместе с данными. См. Например, hashed message authentication code (HMAC).

0

В зависимости от того, что вы хотите, сделайте с ним.

Если вы просто хотите запутать его (особенно когда вы создаете эти URL-адреса в Javascript или так), вы можете применить ROT13 к URL-адресу и поменять несколько дополнительных символов, чтобы сделать его более сложным.

Однако, если безопасность вашего приложения зависит от него, вы можете применить симметричное шифрование статического ключа на стороне сервера данных и декодировать его при получении запроса или около того. Я думаю, что для этого есть рамки.

Смежные вопросы