我有一个要求,我必须阻止用户在整个应用程序的=
中输入textbox
,以防止漏洞。
<input type="text"></input>
我一直在使用antisamy-1.4.4.xml
和XSSFilter.java
来处理许多漏洞检查,但是不会对{1]中输入的'='
符号进行检查 }}。无论如何,我可以为整个应用程序完成的文本框做什么?
答案 0 :(得分:4)
您可以将侦听器附加到文档中的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()
完全禁用粘贴。
答案 1 :(得分:0)
在前端上,您可以使用JavaScript防止出现这种情况:
document.getElementById('text').onkeydown = function(e) {
const code = e.which || e.keyCode;
if (code === 187) {
e.preventDefault();
}
}
<input type="text" id="text">
但是,您始终还需要在服务器端验证输入!
答案 2 :(得分:0)
首先,您需要添加选择器类(例如id或class),然后只需将此js代码添加到您的页面中
$(document).ready(function () {
$('#textnote').keydown(function (e) {
if (e.keyCode == 61) {
e.preventDefault();
return false;
}
});
});
答案 3 :(得分:0)
您应该侦听输入字段的按键事件,并防止使用'='键。
<script>
document.getElementById("text_input").addEventListener("keypress", function(event){
if(event.which==187 || event.keyCode==187){
event.preventDefault();
}
});
</script>