Каково различие между mysql_real_escape_string и addslashes?

Для Apache вы можете использовать mod_ssl для принудительного SSL с помощью SSLRequireSSL Directive :

Эта директива запрещает доступ, если только HTTP over SSL (т.е. HTTPS) включен для текущего соединения. Это очень удобно внутри виртуального хоста или каталогов с поддержкой SSL для защиты от ошибок конфигурации, которые выставляют материал, который должен быть защищен. Когда эта директива присутствует, все запросы отклоняются, которые не используют SSL.

blockquote>

Это не будет делать переадресацию на https. Чтобы перенаправить, попробуйте следующее с mod_rewrite в вашем файле .htaccess

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

или любом из различных подходов, приведенных в

Вы также можете решить это из PHP в случае, если ваш провайдер отключил .htaccess (что маловероятно, так как вы его просили, но в любом случае)

if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
    if(!headers_sent()) {
        header("Status: 301 Moved Permanently");
        header(sprintf(
            'Location: https://%s%s',
            $_SERVER['HTTP_HOST'],
            $_SERVER['REQUEST_URI']
        ));
        exit();
    }
}

9
задан Kemal 18 September 2008 в 09:32
поделиться

4 ответа

string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )
mysql_real_escape_string() библиотечная функция MySQL вызовов mysql_real_escape_string, который предварительно ожидает обратные косые черты к следующим символам: \x00, \n, \r, \, ', "и \x1a.

string addslashes ( string $str )
Возвращает строку с обратными косыми чертами перед символами, которые должны быть заключены в кавычки в запросах базы данных и т.д. Эти символы являются одинарной кавычкой ('), двойная кавычка ("), обратная косая черта (\) и NUL (ПУСТОЙ байт).

Они влияют на различные символы. mysql_real_escape_string характерно для MySQL. Addslashes является просто общей функцией, которая может относиться к другим вещам, а также MySQL.

15
ответ дан 4 December 2019 в 08:54
поделиться

mysql_real_escape_string() обладает дополнительным преимуществом выхода из ввода текста правильно относительно набора символов базы данных через дополнительный link_identifier параметр.

Осведомленность набора символов является критическим различием. addslashes() добавит наклонная черта перед каждым двоичным представлением на восемь битов каждого символа, которого оставят.

При использовании некоторой формы многобайтового набора символов, это возможно, хотя, вероятно, только посредством плохого дизайна набора символов, что одна или обе половины шестнадцати или тридцатидвухбитового символьного представления идентичны восьми битам символа addslashes() добавила бы наклонная черта к.

В таких случаях Вы могли бы добавить наклонную черту перед символом, которого нельзя оставить или, хуже все еще, Вы могли бы получить наклонную черту посреди шестнадцати (или тридцать два) разрядный символ, который повредит данные.

Если необходимо выйти из содержания в запросах базы данных, необходимо всегда использовать mysql_real_escape_string() если это возможно. addslashes() прекрасен, если Вы уверены, база данных или таблица используют ASCII на 7 или 8 битов, кодирующий только.

8
ответ дан 4 December 2019 в 08:54
поделиться

mysql_real_escape_string должен использоваться, когда Вы получаете двоичные данные, addslashes для ввода текста.

Вы видите различия здесь: mysql-real-escape-string и addslashes

0
ответ дан 4 December 2019 в 08:54
поделиться

Это кажется этим mysql_real_escape_string двоично-безопасно - состояния документации:

Если двоичные данные должны быть вставлены, эта функция должна использоваться.

Я думаю, что, вероятно, более безопасно всегда использовать mysql_real_escape_string чем addslashes.

0
ответ дан 4 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: