网站2018年12月21日网站遭到大规模攻击 流量达到80G流量连接次数过千万
大神们求支招 ?
禁止在任何地方输入密钥
如果您<textarea>的表单中没有,请将以下内容添加到您的表单中<form>:
<form ... onkeypress="return event.keyCode != 13;">
或者用jQuery:
$(document).on("keypress", "form", function(event) {
return event.keyCode != 13;
});
这将导致表单中的每个按键都将在keyCode上进行检查。如果它不是13(回车键),那么它将返回true,任何事情都会按预期进行。如果是13(回车键),那么它将返回false,任何东西都会立即停止,所以表单将不会被提交。
该keypress事件优于keydown作为实际上被插入字符时,这是唯一的烧制。当按下任何键时,keydown(和keyup)会被触发,包括控制键。而且,的代表被插入实际的字符,不使用物理按键。这样你就不需要明确地检查Numpad Enter键(108)是否被按下了。该是来不及阻止表单提交。keyCodekeypresskeyup
需要注意的是$(window)在一些其他的答案,而不是建议的$(document)方法不能用于keydown/ keypress/ keyup在IE <= 8,所以,如果你喜欢,以覆盖那些可怜的用户,以及这是不是一个好的选择。
只允许在textareas上输入密钥
如果你有一个<textarea>表单(这当然应该接受回车键),那么把按键处理程序添加到每个不是一个单独的输入元素<textarea>。
<input ... onkeypress="return event.keyCode != 13;">
<select ... onkeypress="return event.keyCode != 13;">
...
为了减少样板,最好用jQuery来完成:
$(document).on("keypress", ":input:not(textarea)", function(event) {
return event.keyCode != 13;
});
如果在这些输入元素上附加了其他的事件处理函数,那么您也需要在某些原因上输入密钥,那么只能防止事件的默认行为,而不是返回false,以便能正确传播给其他处理程序。
$(document).on("keypress", ":input:not(textarea)", function(event) {
if (event.keyCode == 13) {
event.preventDefault();
}
});
允许在textareas上输入密钥并仅提交按钮
如果你想允许按下提交按钮<input|button type="submit">,那么你总是可以细化选择器如下。
$(document).on("keypress", ":input:not(textarea):not([type=submit])", function(event) {
// ...
});
请注意,input[type=text]正如其他答案中的建议不包括那些HTML5非文本输入,所以这不是一个好的选择器。
你可以使用诸如
$(document).ready(function() {
$(window).keydown(function(event){
if(event.keyCode == 13) {
event.preventDefault();
return false;
}
});
});
为了使其更加可用,并允许人们在Enter完成所有领域时按下:
function validationFunction() {
$('input').each(function() {
...
}
if(good) {
return true;
}
return false;
}
$(document).ready(function() {
$(window).keydown(function(event){
if( (event.keyCode == 13) && (validationFunction() == false) ) {
event.preventDefault();
return false;
}
});
});