Как ввести нулевой символ в веб-форму?
Я тестирую веб-форму 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. Не полностью уверены в том, сколько нулей требуется, но:
�
Для произвольного символа Unicode проще использовать шестнадцатеричную нотацию. Например, ㍝
печатает ㍝ U+335D
.
Обновление: этот вопрос довольно сложный. Мне удалось вставить нулевой символ внутри HTML-документа (используя скрипт на стороне сервера и проверенный с помощью шестнадцатеричного редактора). Как и ожидалось, нет никакой разницы с сущностью HTML, которая может быть либо �
или �
, Но браузер не отправляет символ в почтовом запросе (тестируется с 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:
Ø = Ø (usually for null)
ø = ø (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 вообще не имеет значения (как упоминалось выше).
Надеюсь, это поможет в построении взгляда, который вы ищете.