如何正确地在HTML属性中转义引号?

html HTML

乐米亚

2020-04-03

我在下拉式网页上有一个下拉菜单,当值字符串包含引号时,该网页中断。

值为"asd,但在DOM中,它始终显示为空字符串。

我已经尽一切努力设法正确地对字符串进行转义,但无济于事。

<option value=""asd">test</option>
<option value="\"asd">test</option>
<option value="&quot;asd">test</option>
<option value="&#34;asd">test</option>

如何在页面上呈现此内容,以便回发消息包含正确的值?

第4003篇《如何正确地在HTML属性中转义引号?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

4个回答
猪猪 2020.04.03

没有办法在输入文本的值中转义引号...但是您可以使用javascript(或jquery):

<input type="input" name="myinput" id="myinput" value="" />
<script>document.getElementById("myinput").value="This input has a [\"]";</script>
老丝阿飞 2020.04.03

如果您使用的是Javascript和Lodash,则可以使用_.escape(),以转义“,”,<,>和&。

看到这里:https : //lodash.com/docs/#escape

Tom凯 2020.04.03

您实际上只应将不受信任的数据放入具有良好属性的白名单中,例如:align,alink,alt,bgcolor,border,cellpadding,cellspacing,class,color,cols,colspan,coords,dir,face,height,hspace,ismap,lang ,marginheight,marginwidth,多个,nohref,noresize,noshade,nowrap,ref,rel,rev,行,rowpan,滚动,形状,跨度,摘要,tabindex,标题,usemap,valign,值,vlink,vspace,宽度

您确实想将不受信任的数据以及javascript或id或name属性(它们可能破坏DOM中的其他元素)排除在JavaScript处理程序之外。

另外,如果将不受信任的数据放入SRC或HREF属性中,那么它实际上是不受信任的URL,因此您应该验证URL,确保其不是javascript:URL,然后进行HTML实体编码。

有关此处所有内容的更多详细信息,请访问:https : //www.owasp.org/index.php/Abridged_XSS_Prevention_Cheat_Sheet

GO 2020.04.03

如果您使用的是PHP,请尝试调用htmlentitieshtmlspecialchars函数。

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android