Как ввести нулевой символ в веб-форму?

Я тестирую веб-форму ASP.NET, которая должна отфильтровывать нулевые символы из ввода.

Чтобы проверить эту функциональность, как я могу набрать нулевой символ в форме html? Я пробовал Alt + 0, но он не работает.

Я знаю, что могу сделать это в запросе GET, используя "% 00" в URL. Тем не менее, я хочу сделать это в форме POST.

Ответ 1

Я смог сделать это, используя плагин TamperData Firefox.

https://addons.mozilla.org/en-US/firefox/addon/tamper-data/

Когда вы получили всплывающее сообщение Tamper, я набрал "% 00" в поле "Значение после параметра".

Тем не менее, я не могу найти способ ввода нулевого символа с помощью клавиатуры.

Ответ 2

<html>
    <body onload='document.forms[0].submit();'>
        <form method="post" action="http://localhost/test.asp" >
            <input type="hidden" name="param" value="%00">
        </form>
    </body>
</html>

Ответ 3

Вы можете использовать объект HTML. Не полностью уверены в том, сколько нулей требуется, но:

&#0;

Для произвольного символа Unicode проще использовать шестнадцатеричную нотацию. Например, &#x335D; печатает ㍝ U+335D.


Обновление: этот вопрос довольно сложный. Мне удалось вставить нулевой символ внутри HTML-документа (используя скрипт на стороне сервера и проверенный с помощью шестнадцатеричного редактора). Как и ожидалось, нет никакой разницы с сущностью HTML, которая может быть либо &#0; или &#x0; , Но браузер не отправляет символ в почтовом запросе (тестируется с Firefox и Firebug): он отправляет %EF%BF%BD, который является ЗАМЕНАМИ ХАРАКТЕРА '(U + FFFD). Именно он отправляет метку опроса в поле, которое использовалось для печати нулевого значения в документе (при условии, что значение null не может быть распечатано).

Я предполагаю, что ваши тестеры должны выполнить сценарий задачи.

Ответ 4

Используйте AJAX для отправки формы. Т.е. вставьте что-то вроде этого в адресной строке:

javascript:(function(){var xhr=new XMLHttpRequest();xhr.onreadystatechange=function(){if(this.readyState==4){document.write(this.responseText)}};xhr.open("POST",'/form',true);xhr.send("\0");})()

Здесь он развернут, поэтому вы можете увидеть его:

(function() {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function () {
        if (this.readyState == 4) {
            document.write(this.responseText);
        }
    };
    xhr.open("POST", '/form', true);
    xhr.send("\0");
})()

Конечно, есть некоторые ограничения, так как он просто слепо заменяет содержимое текущей страницы тем, что он получил. Но этого может быть достаточно, чтобы сказать, что что-то пошло не так или нет.

Ответ 5

Латинский символ O с косой чертой часто принимается как символ Null/Nul (или пустой, если хотите). Если вы используете приложения, управляемые базами данных, вы захотите деактивировать этот символ для замены нулевым или пустым, в зависимости от ваших потребностей.

Как это сделать: ALT + 0216 в вашем любимом редакторе должен дать вам Ø - что для этой цели отображения Null.

Затем, в качестве примера и наилучшей практики, вы будете дезинформировать отправку формы до того, как она будет передана в базу данных.

Пример: если вы используете PHP-сайт, основанный на базе данных, ваша санация этого конкретного персонажа может выглядеть примерно так...

$dbstring = str_replace(Ø,NULL); and the value will be NULL

Или попробуйте...

$dbstring = str_replace(Ø,""); and the value will be BLANK

! в качестве альтернативы, вы можете захотеть сделать это отображение с кодами объектов HTML, о которых я расскажу ниже.

Alt + 0216. Если вы используете обычную 104-клавишную клавиатуру с английским (американским) в качестве основного языка, нажмите и удерживайте клавишу ALT, и удерживая клавишу NUMBER PAD, введите 0216. Затем отпустите клавишу ALT и должен появиться символ. * Это в первую очередь метод Windows. Macintosh, (X) nix и bsd, вы, вероятно, застрянете с использованием кодов объектов HTML.

Особое примечание: использование номеров с верхней клавиатурой не работает. Если вы находитесь на ноутбуке или другом устройстве, что делает это трудным или невозможным. попробуйте альтернативу: используйте коды объектов HTML:

&Oslash; = Ø (usually for null)
&oslash; = ø (could be used, but the upper-case version seems more appropriate.)

Другие мысли, которые могут быть полезны: Nul vs Null vs Blank - Они в корне означают одно и то же, но разные языки программирования используют или требуют этого по-разному. (Есть и другие, например NULPTR для Null Pointer.)

Точка, которую я пытаюсь сделать с помощью NUL/NULL, заключается в том, что представленная переменная "не существует" или просто "вообще не была". В большинстве контекстов вы можете просто называть это "Нуль" и понимать.

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

Надеюсь, это поможет в построении взгляда, который вы ищете.