Как ввести нулевой символ в веб-форму? - PullRequest
20 голосов
/ 05 августа 2011

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

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

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

Ответы [ 5 ]

7 голосов
/ 06 августа 2011

Мне удалось сделать это с помощью плагина TamperData Firefox.

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

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

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

0 голосов
/ 03 февраля 2015

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

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

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

Пример Case: Если вы загружаете 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, заключается в том, что переданная переменная «не существует» или просто «не была ввсе'.В большинстве случаев вы можете просто назвать это «Null» и быть понятым.

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

Надеемся, это поможет в построении искомого представления.

0 голосов
/ 05 августа 2011

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

�

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


Обновление: Этот вопрос действительно довольно сложный. Мне удалось вставить нулевой символ в документ HTML (используя скрипт на стороне сервера и проверенный шестнадцатеричным редактором). Как и ожидалось, нет никакой разницы с сущностью HTML, которая может быть или � или �. Но браузер не отправляет символ в запросе на публикацию (протестировано с Firefox и Firebug): он отправляет %EF%BF%BD, то есть ЗАМЕНЯЮЩИЙ СИМВОЛ '(U + FFFD) . Именно он отправляет метку запроса в поле, которое используется для печати нулевого значения в документе (учитывая, что нулевое значение не может быть напечатано).

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

0 голосов
/ 05 августа 2011

Используйте 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");
})()

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

0 голосов
/ 05 августа 2011
<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...