gpt4 book ai didi

javascript - 防止代码被利用,保护 Javascript 和表单

转载 作者:行者123 更新时间:2023-11-30 07:47:16 24 4
gpt4 key购买 nike

我正在创建一个页面,如果用户按正确顺序点击 25 个复选框中的 8 个,就可以访问我网站的特定部分。

首先感谢Reigel对于原始代码,他拿走了我所拥有的并重写了它,它比我最初开始的要好得多。也感谢 Peter Ajtai帮助我优化代码。

我的问题是,我怎样才能清理输出,防止任何人利用任何东西,或添加任何会弄乱服务器的东西。有必要吗?

这是一个实时版本:Click Here to see a live working version

我的代码如下:

<body onLoad="clearForms()" onUnload="clearForms()">

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

<form id="form1" name="form1" method="post" action="check_combination.php">
<table width="200" border="1" align="center">

<tr>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="1" /></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="2"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="3"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="4"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="5"/></td>
</tr>

<tr>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="6"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="7"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="8"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="9"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="10"/></td>
</tr>

<tr>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="11"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="12"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="13"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="14"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="15"/></td>
</tr>

<tr>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="16"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="17"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="18"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="19"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="20"/></td>
</tr>

<tr>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="21"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="22"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="23"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="24"/></td>
<td width="20" align="center" valign="middle"><input name="checkbox" type="checkbox" value="25"/></td>
</tr>

<tr>
<td height="23" colspan="5" align="center" valign="middle" class="label"></td>
</tr>

<tr>
<td height="28" colspan="5" align="center" valign="middle"><input type="button" value="Test length" id="test" /></td>
</tr>

<tr>
<td height="28" colspan="5" align="center" valign="middle"><input type="submit" name="button" id="button" value="Submit" /></td>
</tr>

<tr>
<td height="28" colspan="5" align="center" valign="middle"><input type="button" name="button" id="button2" value="Test hidden input value" /></td>
</tr>

</table>

<input name="result" type="hidden" id="result" />

</form>

</body>

和 javascript:

function clearForms() {
var i;
for (i = 0; (i < document.forms.length); i++) {
document.forms[i].reset();
$(':checkbox[name=checkbox]:disabled').attr('disabled', false);

}
}


//initial checkCount of zero
var checkCount = 0;

//maximum number of allowed checked boxes
var maxChecks = 8;

$(document).ready(function() {

clearForms();

$("#form1").submit(function(e) {
if($("input:checkbox:checked").length < 8) {
alert("You must select at least 8 options before submitting!");
e.preventDefault();
}
});

var $nameCheckbox = $('input:checkbox[name=checkbox]');

$nameCheckbox.click(function() {

//update checkCount
checkCount = $('input:checked').length;

if (checkCount >= maxChecks) {
//alert('you may only choose up to ' + maxChecks + ' options');
$nameCheckbox.not(':checked').attr('disabled', true);
} else {
$nameCheckbox.filter(':disabled').attr('disabled', false);
}

if (this.checked) {
$("td.label").append('<label>' + this.value + ' </label>');
} else {
$("td.label").find(':contains(' + this.value + ')').remove();
}

$('input[name="result"]').val($("td.label").text());

});


$("#test").click(function() {
alert($('input:checked').length)
});

$('#button2').click(function() {
alert($('input[name="result"]').val());
});

});

最佳答案

首先,感谢您的提及,欢迎您的到来。

My question is, how can I clean the output, keeping anyone from exploiting anything, or adding anything that will mess up the server. Is it needed?

我的建议是始终在服务器端进行检查。是的,您可以在客户端进行检查,但是当它在客户端时,客户端/用户有权更改内容。因此,如果可以(我建议您必须),请同时检查服务器端和客户端。

关于javascript - 防止代码被利用,保护 Javascript 和表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3860694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com