如何防止 RFID 卡 reader 以 html 形式仿制?
How to Prevent RFID card reader imitation in html form?
我正在使用 RFID 卡 reader 对网络服务中的用户进行身份验证。 reader 充当键盘,一旦它读取卡片,它就会 "types" 它的序列号后跟一个换行符,它提交 html 表格。
我正在尝试编写一个脚本来检测用户是否实际在输入字段中键入了序列号而不是扫描卡片。
我目前的解决方案是使输入字段看起来更像一个按钮而不是一个字段,但这不是一个优雅的解决方案。
有更好的主意吗?
我使用了以下技术:检测 copy/paste 并为击键之间的间隔计时。这是我的代码。
html
<input name="card_number" id="card_number" oninput="detectHumans();" placeholder="SCAN CARD"/>
JS
var x = -1;
var delta = 0;
var count = 0;
function detectHumans() {
count += 1;
if ($("#card_number").val().length != count) {
alert('human detected');
$("body").html('');
}
console.log($("#card_number").val());
y = Date.now();
if (x == -1) {
x = y;
}
else if (delta == 0) {
delta = y - x;
x = y;
}
else{
var new_delta = y - x;
console.log(delta);
console.log(new_delta);
if (Math.abs(new_delta - delta) > 10) {
alert('human detected');
$("body").html('');
}
delta = new_delta;
x = y;
}
}
我正在使用 RFID 卡 reader 对网络服务中的用户进行身份验证。 reader 充当键盘,一旦它读取卡片,它就会 "types" 它的序列号后跟一个换行符,它提交 html 表格。
我正在尝试编写一个脚本来检测用户是否实际在输入字段中键入了序列号而不是扫描卡片。
我目前的解决方案是使输入字段看起来更像一个按钮而不是一个字段,但这不是一个优雅的解决方案。
有更好的主意吗?
我使用了以下技术:检测 copy/paste 并为击键之间的间隔计时。这是我的代码。
html
<input name="card_number" id="card_number" oninput="detectHumans();" placeholder="SCAN CARD"/>
JS
var x = -1;
var delta = 0;
var count = 0;
function detectHumans() {
count += 1;
if ($("#card_number").val().length != count) {
alert('human detected');
$("body").html('');
}
console.log($("#card_number").val());
y = Date.now();
if (x == -1) {
x = y;
}
else if (delta == 0) {
delta = y - x;
x = y;
}
else{
var new_delta = y - x;
console.log(delta);
console.log(new_delta);
if (Math.abs(new_delta - delta) > 10) {
alert('human detected');
$("body").html('');
}
delta = new_delta;
x = y;
}
}