javascript : 如何防止用户在文本框中输入=?
javascript : How to prevent user from entering = in textbox?
我有一个要求,我必须阻止用户在整个应用程序的 textbox
中输入 =
以防止漏洞。
<input type="text"></input>
我一直在使用 antisamy-1.4.4.xml
和 XSSFilter.java
,它们负责很多漏洞检查,但 不检查 的 '='
标志输入 textbox
。无论如何我可以为整个应用程序完成的文本框做些什么?
在前端,您可以使用JavaScript来防止:
document.getElementById('text').onkeydown = function(e) {
const code = e.which || e.keyCode;
if (code === 187) {
e.preventDefault();
}
}
<input type="text" id="text">
但是您也始终需要在服务器端验证输入!
首先,您需要添加选择器 class,例如 id 或 class,然后您只需将此 js 代码添加到您的页面
$(document).ready(function () {
$('#textnote').keydown(function (e) {
if (e.keyCode == 61) {
e.preventDefault();
return false;
}
});
});
你应该监听输入框的按键事件,防止'='键。
<script>
document.getElementById("text_input").addEventListener("keypress", function(event){
if(event.which==187 || event.keyCode==187){
event.preventDefault();
}
});
</script>
您可以将侦听器附加到文档中的 input
元素,检查用户是否按下了 =
键,如果是,则采取行动。
像这样的东西应该可以工作:
const textInput = document.querySelector('input');
textInput.addEventListener("keydown", function(event) {
if (event.keyCode === 187) {
console.log("equals pressed");
// Prevent default behaviour
event.preventDefault();
return false;
}
});
<input type="text"></input>
但我不会将此视为 "secure",因为用户可以在其浏览器中覆盖 JS 行为。您仍然应该清理服务器端的输入。
更新
要处理用户 将某些内容粘贴 到 input
字段中的情况,您可以拦截粘贴的字符串并删除非法字符(在这种情况下为等号).
示例:
textInput.onpaste = function(e) {
e.preventDefault();
clipboardData = e.clipboardData;
pastedData = clipboardData.getData('Text');
textInput.value = pastedData.replace("=", "");
}
或者您可以 e.preventDefault()
完全禁用粘贴。
我有一个要求,我必须阻止用户在整个应用程序的 textbox
中输入 =
以防止漏洞。
<input type="text"></input>
我一直在使用 antisamy-1.4.4.xml
和 XSSFilter.java
,它们负责很多漏洞检查,但 不检查 的 '='
标志输入 textbox
。无论如何我可以为整个应用程序完成的文本框做些什么?
在前端,您可以使用JavaScript来防止:
document.getElementById('text').onkeydown = function(e) {
const code = e.which || e.keyCode;
if (code === 187) {
e.preventDefault();
}
}
<input type="text" id="text">
但是您也始终需要在服务器端验证输入!
首先,您需要添加选择器 class,例如 id 或 class,然后您只需将此 js 代码添加到您的页面
$(document).ready(function () {
$('#textnote').keydown(function (e) {
if (e.keyCode == 61) {
e.preventDefault();
return false;
}
});
});
你应该监听输入框的按键事件,防止'='键。
<script>
document.getElementById("text_input").addEventListener("keypress", function(event){
if(event.which==187 || event.keyCode==187){
event.preventDefault();
}
});
</script>
您可以将侦听器附加到文档中的 input
元素,检查用户是否按下了 =
键,如果是,则采取行动。
像这样的东西应该可以工作:
const textInput = document.querySelector('input');
textInput.addEventListener("keydown", function(event) {
if (event.keyCode === 187) {
console.log("equals pressed");
// Prevent default behaviour
event.preventDefault();
return false;
}
});
<input type="text"></input>
但我不会将此视为 "secure",因为用户可以在其浏览器中覆盖 JS 行为。您仍然应该清理服务器端的输入。
更新
要处理用户 将某些内容粘贴 到 input
字段中的情况,您可以拦截粘贴的字符串并删除非法字符(在这种情况下为等号).
示例:
textInput.onpaste = function(e) {
e.preventDefault();
clipboardData = e.clipboardData;
pastedData = clipboardData.getData('Text');
textInput.value = pastedData.replace("=", "");
}
或者您可以 e.preventDefault()
完全禁用粘贴。