Html 如何在web表单中输入空字符?

Html 如何在web表单中输入空字符?,html,forms,Html,Forms,我正在测试一个ASP.NET web表单,它需要从输入中过滤掉空字符 要测试此功能,如何在html表单中实际键入空字符?我尝试了Alt+0,但不起作用 我知道我可以通过在URL中使用“%00”在GET请求中执行此操作。但是,我想在一个表单帖子中完成它。 <html> <body onload='document.forms[0].submit();'> <form method="post" action="http://localhost/

我正在测试一个ASP.NET web表单,它需要从输入中过滤掉空字符

要测试此功能,如何在html表单中实际键入空字符?我尝试了Alt+0,但不起作用

我知道我可以通过在URL中使用“%00”在GET请求中执行此操作。但是,我想在一个表单帖子中完成它。


<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>

您可以使用HTML实体。不完全确定需要多少个零,但:

&#0;
对于任意Unicode字符,使用十六进制表示法更容易。例如,
和#x335D打印㍝ 它是
U+335D


更新:这个问题确实很棘手。我成功地在HTML文档中插入了一个空字符(使用服务器端脚本并用十六进制编辑器验证)。正如预期的那样,与HTML实体没有区别,可以使用。但是浏览器不发送post请求中的字符(使用Firefox和Firebug测试):它发送
%EF%BF%BD
,这是一个错误。确切地说,它在一个用于打印文档中null的框中发送询问标记(假定null不可打印)


我猜您的测试人员需要编写任务脚本。

使用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");
})()

当然,这也有一些局限性,因为它只是盲目地用返回的内容替换当前页面的内容。但这可能足以判断出是否出了问题。

我可以使用TamperData Firefox插件来实现这一点

当给出篡改弹出窗口时,我在Post参数值字段中键入“%00”


尽管如此,我仍然找不到一种只使用键盘键入空字符的方法。

带斜杠的拉丁字符O通常可以作为空/Nul的符号(如果愿意,也可以为空)。如果您使用的是数据库驱动的应用程序,则需要根据需要清理此符号以将其替换为null或空白

如何做: 在您喜爱的编辑器中,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键,同时按住数字键盘键输入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表示空指针。)

我试图用NUL/NULL说明的一点是,提交的变量“不存在”或者只是“根本不存在”。在大多数上下文中,您可以简单地将其称为“Null”并被理解

一些数据库系统将空白和空视为同一事物。在其他情况下,Blank实际上是一个空值,而NULL根本不是值(如上所述)


希望这有助于构建您正在寻找的视图。

我的建议是将空字符写入您想要的html元素中 例:

document.getElementByID(“我的空标签”).innerHTML+=“\0”

在某种程度上,您想知道如何不键入任何内容。我指的是空字符“\0”。在unicode中,它是\x00。如果您特别想知道键入/粘贴它(而不是查找编程/自动解决方案),最好在superuser.com上询问,尽管快速搜索似乎表明这是不可能的。为什么您需要测试它?这很简单,删除输入到服务器的所有禁止字符/代码点,您应该会没事的。在C#中进行一个简单的单元测试就可以验证这样的代码。任何人都知道在现代浏览器中,一个普通用户最终可能会发送这样的代码。我从一位真正的客户那里收到了以下JSON
{“address1”:“1234 New York\u0000\u0000\u0000\u0000\u0000\u0000 Avenue”}
,我不知道他们是如何做到的!我希望QA测试人员能够在他们的浏览器中输入一些东西。由于操作系统剪贴板的实现方式,QA测试人员不可能将空字节粘贴到字段中。我建议您创建一个类似上面示例的HTML文件,并让QA测试人员浏览到它。如果希望QA测试器有更多的自由(选择哪个字段应该接收空字节),请考虑实现自动解析查询字符串的ASP页面,并构建一个自动提交表单,比如一个PROVIEDIF粘贴,而不是一个选项。一个空字节可以通过一些控制序列简单地键入吗?这不是一个空字符。这是一个空字符的HTML实体表示。我的借口是,我做了一个快速测试,但它有缺陷。如果我能让它工作或删除这个问题,我会向你汇报。我喜欢篡改数据。我现在用的是Chrome浏览器,但有时我会反思一下当我改用Chrome浏览器时我失去了什么…@Pacerier Nope。我能得到的最接近的是绊倒t