入侵公共服务-如果确实需要,则可以

大家好,亲爱的哈布拉维特斯!

这是一个简短的故事-为自己的目的应用技术技能绕过系统的示例。
主持人:注意! 本文是出于实验目的的可能性的描述。 我们提醒您,重复此类操作可能会导致违反法律。

简短的背景是我是白俄罗斯人,我住在圣彼得堡,所以我决定替换现有的俄罗斯驾驶执照。 当我通过国家服务网站了解到30%的折扣时,作为热情的白俄罗斯人,我决定立即利用它。

我必须立即说没有任何违法的事情发生,否则这篇文章就不会出现。

我去了国家服务局,在应用程序菜单中选择了更换驾驶执照”

我填写了所有字段,单击“发送”,然后bam-错误。 “该字段是必需的。”



与俄罗斯护照不同,白俄罗斯护照有一系列两个拉丁字母。

显然,出于这个原因,该系列不是从“我的帐户”中的数据中提取的。 通过在浏览器中打开“开发人员面板”并看到此文本字段的掩码,我深信不疑: mask =“ 00 00”



并且该字段是只读的 。 并确保填写! 并且我无法输入其中的“ PP ”系列。

首先,作为一个受人尊敬的用户,我试图以文明的方式解决此问题。

我在国家服务部的支持下的信函持续了几个星期,我将仅简要介绍一下。 我的建议是从“护照系列”字段中删除只读属性,或者从数字中删除掩码 ,然后从“我的帐户”中正确提取它。 首先,我只是简单地解释了要支持的问题的本质,这花费了很多时间。 然后我得到了有关清理Cookie,浏览器缓存等的标准答案。 然后我收到一个答复,说不可能进行修改,因为申请表是内政部提供的,因此有必要联系内政部。 然后,由于我的坚持,我收到了一封信,说我是外国公民,根本没有使用这项服务的权利。

已经有一个原则问题,我决定一路走下去,继续寻求支持,那时我想-为什么不尝试手动填写此字段。 我不输入其他人的数据。 相反,我确保无法正常运行的功能正常运行。

因此,我打开应用程序,在浏览器中打开开发人员面板,找到所需的元素,删除与掩码和只读相关的所有属性,然后尝试在其中输入系列:



爸爸! 在该字段中输入数字,但不输入字母。

我什至尝试删除此元素具有的所有属性,并尝试在其中输入字母。 没用 由此得出的结论是,在Javascript的某个地方处理了字段中的字符输入。

我是一名桌面应用程序程序员,我不是Web开发人员,并且我没有针对Web脚本(以及开发人员面板以外的某些调试工具)的认真调试技能。 看到此页面使用了多少代码,我决定不浪费时间,但是有一种情况帮助我。 在“控制台”选项卡上,我看到当您在文本字段中输入任何字符时,就会记录该字符。



我转到pages-min-9fa87087e7.js脚本的指定链接,并看到以下代码(用{}按钮对其进行格式化后 以提高可读性)。

            window.addEventListener("keyup", function(e) {
                e.which <= 90 && 48 <= e.which && (i += e.key.toLowerCase(),
                n.forEach(function(e) {
                    console.log(i),
                    -1 != i.indexOf(e) && (r = !1,
                    l(),
                    i = "")
                }));
                if (13 === e.keyCode) {
                    s++;
                    var t = new Date;
                    t - a <= o && 3 === s && (r = !1,
                    l(),
                    t = s = 0),
                    window.setTimeout(function() {
                        s = 0
                    }, o),
                    a = t
                }
            });

. window keyup , , . , .

– . - , input . , , ? removeEventListener(), , .

, , – , ( , ) , :

var el = document.getElementById('mydiv'),
elClone = el.cloneNode(true);

el.parentNode.replaceChild(elClone, el);

onkeyup input’. , :

<input
id="form.FormStep2.Panel11.Panel_IGdoc.Panel1.idDocumentSerie"
type="text"
ng-model="inp"
ng-trim="false"
ng-model-options="{ updateOn: 'default blur', debounce: { 'default': debounceTime, 'blur': 0 } }"
tabindex="-1"
ng-blur="onBlurHandler(model.value, $event)"
ng-focus="onFocusHandler($event)"
ng-keydown="inputKeyup($event)"
class="PGU-FieldTextInputBasic field-padded -metrika-nokeys ng-valid ng-isolate-scope ng-valid-maxlength ng-dirty ng-valid-parse ng-touched"
change="changeByUser()"
model="item"
idinp="form.FormStep2.Panel11.Panel_IGdoc.Panel1.idDocumentSerie"
style=""
onkeyup="
document.getElementById('form.FormStep2.Panel11.Panel_IGdoc.Panel1.idDocumentSerie').value='PP';
var el = document.getElementById('form.FormStep2.Panel11.Panel_IGdoc.Panel1.idDocumentSerie'),  elClone = el.cloneNode(true); 
el.parentNode.replaceChild(elClone, el);
"
>

– , onkeyup, input’ PP. !

«» - . Input - .



– -, - . – , , , input’, , . .

, .


. – -, . , . - . , . .

-, . - - .

, , , .

Source: https://habr.com/ru/post/zh-CN435548/


All Articles