我有一个要求,我必须阻止用户进入=
整个textbox
应用程序以防止漏洞。
<input type="text"></input>
我一直在使用它antisamy-1.4.4.xml
,XSSFilter.java
它负责很多漏洞检查,但不检查输入的'='
登录textbox
。无论如何我可以为整个应用程序完成的文本框做些什么?
我有一个要求,我必须阻止用户进入=
整个textbox
应用程序以防止漏洞。
<input type="text"></input>
我一直在使用它antisamy-1.4.4.xml
,XSSFilter.java
它负责很多漏洞检查,但不检查输入的'='
登录textbox
。无论如何我可以为整个应用程序完成的文本框做些什么?
您可以将侦听器附加到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>
但我不会认为这是“安全的”,因为用户可以在他们的浏览器中覆盖 JS 行为。您仍然应该清理服务器端的输入。
更新
要处理用户将某些内容粘贴到input
字段中的情况,您可以截取粘贴的字符串并去除非法字符(在这种情况下为等号)。
例子:
textInput.onpaste = function(e) {
e.preventDefault();
clipboardData = e.clipboardData;
pastedData = clipboardData.getData('Text');
textInput.value = pastedData.replace("=", "");
}
或者您可以e.preventDefault()
完全禁用粘贴。
在前端,您可以使用 JavaScript 来防止:
document.getElementById('text').onkeydown = function(e) {
const code = e.which || e.keyCode;
if (code === 187) {
e.preventDefault();
}
}
<input type="text" id="text">
但是您也总是需要验证服务器端的输入!
首先,您需要添加选择器类,例如 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>