ෆේස්බුක් බ්‍රව්සරයේ ඒකාබද්ධ සංවර්ධක මෙවලම් අක්‍රීය කරන්නේ කෙසේද?


1687

පෙනෙන ආකාරයට මෑතදී සිදු වූ වංචාවන් නිසා, සංවර්ධක මෙවලම් අයාචිත තැපැල් පළ කිරීම සඳහා මිනිසුන් විසින් සූරාකනු ලබන අතර ගිණුම් "හැක්" කිරීමට පවා භාවිතා කරයි. ෆේස්බුක් විසින් සංවර්ධක මෙවලම් අවහිර කර ඇති අතර මට කොන්සෝලය භාවිතා කිරීමට පවා නොහැකිය.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

ඔවුන් එය කළේ කෙසේද ?? එක් ස්ටැක් පිටාර ගැලීමේ පෝස්ට් එකක් කියා සිටියේ එය කළ නොහැකි නමුත් ෆේස්බුක් ඒවා වැරදි බව ඔප්පු කර ඇති බවයි.

ෆේස්බුක් වෙත ගොස් සංවර්ධක මෙවලම් විවෘත කර, එක් අක්‍ෂරයක් කොන්සෝලය තුළට ටයිප් කරන්න, එවිට මෙම අනතුරු ඇඟවීම මතු වේ. ඔබ දැමූ දේ කුමක් වුවත් එය ක්‍රියාත්මක නොවනු ඇත.

මෙය කළ හැක්කේ කෙසේද?

ඔවුන් කොන්සෝලය තුළ ස්වයංක්‍රීයව සම්පුර්ණ කිරීම පවා අවහිර කර ඇත:

රූප විස්තරය මෙහි ඇතුළත් කරන්න


22
විනෝදය සඳහා පමණි: console.log = ශ්‍රිතය ()
t

කොන්සෝලය තුළ ඔවුන් ස්වයංක්‍රීය අංගය අවහිර කළ ආකාරය සඳහා විසඳුමක් ඔබ සොයා
ගත්තාද

1
Ks අක්ෂේහෙග්ඩේ එය ඩිවෝටූල් වලින් ඕනෑම කේත ක්‍රියාත්මක කිරීමක් අවහිර කිරීම නිසා ඇති වූ අතුරු ආබාධයකි.
ඩෙරෙක් 朕 會 功夫

@ ඩෙරෙක් 朕 you you ඔබට කරුණාකර කේතය බෙදා ගත හැකිද
අක්ෂේ හෙග්ඩේ

fyi, එය තවදුරටත් ක්‍රෝම් වල අවහිර කර නැත.
ජෝන් සාමිවරයා

Answers:


2441

මම ෆේස්බුක් හි ආරක්ෂක ඉංජිනේරුවෙක් වන අතර මෙය මගේ වරදකි. ජාවාස්ක්‍රිප්ට් කේතය බ්‍රව්සර් කොන්සෝලය තුළට ඇලවීම සඳහා පරිශීලකයින් රැවටී ඇති සමහර ප්‍රහාරයන් මන්දගාමී කළ හැකිදැයි බැලීමට අපි මෙය පරීක්ෂා කරන්නෙමු.

පැහැදිලිව කිවහොත්: හැකර්වරුන්ගේ පාර්ශවය අවහිර කිරීමට උත්සාහ කිරීම පොදුවේ නරක අදහසකි ; මෙය විශේෂිත සමාජ ඉංජිනේරු ප්‍රහාරයකින් ආරක්ෂා වීමයි.

ඔබ පරීක්ෂණ කණ්ඩායමේ අවසන් වී මෙයින් කෝපයට පත් වුවහොත් සමාවන්න. අවම වශයෙන් වින්දිතයින්ගෙන් සමහරෙකු නැවැත්වීමට තරම් බියෙන් සිටියදී පැරණි ඉවත් වීමේ පිටුව (දැන් උදව් පිටුව ) හැකි තරම් සරල කිරීමට මම උත්සාහ කළෙමි .

සත්‍ය කේතය @ joeldixon66 හි සබැඳියට බෙහෙවින් සමාන ය ; හොඳ හේතුවක් නොමැතිව අපේ ඒවා ටිකක් සංකීර්ණයි.

ක්‍රෝම් සියළුම කොන්සෝල කේත ඇතුලත් කරයි

with ((console && console._commandLineAPI) || {}) {
  <code goes here>
}

... එබැවින් වෙබ් අඩවිය console._commandLineAPIවිසි කිරීමට නැවත අර්ථ දක්වයි:

Object.defineProperty(console, '_commandLineAPI',
   { get : function() { throw 'Nooo!' } })

මෙය ප්‍රමාණවත් නොවේ (එය උත්සාහ කරන්න!) , නමුත් එය ප්‍රධාන උපක්‍රමයයි.


එපිලොග්: පරිශීලක පාර්ශවීය ජේඑස් වෙතින් කොන්සෝලය පරාජය කිරීම දෝෂයක් බව ක්‍රෝම් කණ්ඩායම තීරණය කළ අතර ගැටළුව නිරාකරණය කර මෙම තාක්ෂණය අවලංගු කළේය. පසුව, ස්වයං- xss වලින් පරිශීලකයින් ආරක්ෂා කිරීම සඳහා අමතර ආරක්ෂාවක් එක් කරන ලදී .


10
ක්‍රෝම් යාවත්කාලීනයක් කළ නමුත් මේ පුද්ගලයා නැවත නිවැරදි කිරීමක් කළේය: kspace.in/blog/2014/06/21/…
රොජර් ගජ්රාජ්

3
Lf ඇල්ෆ්, ඔබගේ ඉවත් වීමේ පිටුව දැන් මෙම ආරක්‍ෂාව අක්‍රිය කිරීමට කිසිදු හැකියාවක් නොමැතිව උදව් පිටුව පෙන්වයි.
arm.localhost

169
සමහර පරිශීලකයින්ගේ මෝඩකම නිසා කරුණාකර සංවර්ධක මෙවලම් බිඳ නොදමන්න. මේ වගේ “විසඳුම්” මට හිරු මිලියනයක කෝපයෙන් දැවෙනවා.
ජොනතන් ඩන්ලප්

85
මම හිතන්නේ ගූගල් සමාගමට ක්‍රෝම් හි "ආරක්ෂිත" අනුවාදයක් නිකුත් කළ යුතු අතර, ඩිව්ටූල්ස් නැත, ස්වයංක්‍රීය යාවත්කාලීනයන් ඇති ඕනෑම කෙනෙකුට මෙම අනුවාදය වෙත එක් වරක් මාරු වීමට බල කළ යුතුය. ඇත්ත වශයෙන්ම වෙනස දකින සහ DevTools අවශ්‍ය ඕනෑම සංවර්ධකයෙකු "භයානක" අනුවාදය බාගත කළ යුතුය. ඇත්ත වශයෙන්ම, ඒවා බාගැනීම් පිටුවේ කෙලින්ම "භයානක" සහ "ආරක්ෂිත" ලෙස ලේබල් කර ඩාවින් වැසියන්ට තමන්ටම හානියක් නොවන ලෙස පැහැදිලිවම ප්‍රකාශ කිරීමෙන් "ඔබ මෙහි පැමිණියේ සමාජ ඉංජිනේරු ප්‍රහාරයක් මඟින් භයානක අනුවාදය බාගත කරන ලෙස පැවසූ නිසා ය; මෙය කරන්න. ” එතරම් නිර්මාණශීලී වීම ගැන දෙවියන් වහන්සේ ඔබට ආශීර්වාද කරයි!
MonkeyZeus

12
අනතුරු ඇඟවීමේ පණිවිඩය අ console.log.
gcampbell

91

මම ක්‍රෝම් සංවර්ධක මෙවලම් භාවිතයෙන් ෆේස්බුක් හි කොන්සෝල බස්ටර් ස්ක්‍රිප්ට් එක සොයා ගතිමි. කියවීමේ හැකියාව සඳහා සුළු වෙනස්කම් සහිත පිටපත මෙන්න. මට තේරුම් ගත නොහැකි බිටු ඉවත් කර ඇත:

Object.defineProperty(window, "console", {
    value: console,
    writable: false,
    configurable: false
});

var i = 0;
function showWarningAndThrow() {
    if (!i) {
        setTimeout(function () {
            console.log("%cWarning message", "font: 2em sans-serif; color: yellow; background-color: red;");
        }, 1);
        i = 1;
    }
    throw "Console is disabled";
}

var l, n = {
        set: function (o) {
            l = o;
        },
        get: function () {
            showWarningAndThrow();
            return l;
        }
    };
Object.defineProperty(console, "_commandLineAPI", n);
Object.defineProperty(console, "__commandLineAPI", n);

මේ සමඟ, කොන්සෝලය ස්වයංක්‍රීයව සම්පුර්ණයෙන්ම අසමත් වන අතර කොන්සෝලය තුළ ටයිප් කළ ප්‍රකාශ ක්‍රියාත්මක කිරීමට අසමත් වේ (ව්‍යතිරේකය ලොග් වනු ඇත).

යොමුව:


48

කිසිම පිටුවක එය අවුලුවාලීමට මට එය ලබා ගත නොහැකි විය. මෙහි වඩාත් ශක්තිමත් අනුවාදයක් එය කරනු ඇත:

window.console.log = function(){
    console.error('The developer console is temp...');
    window.console.log = function() {
        return false;
    }
}

console.log('test');

ප්‍රතිදානය සැකසීමට: ජාවාස්ක්‍රිප්ට් කොන්සෝලයෙහි වර්ණ

සිතීම සංස්කරණය කරන්න @ joeldixon66 හට නිවැරදි අදහසක් ඇත: කොන්සෝලයෙන් JavaScript ක්‍රියාත්මක කිරීම අක්‍රීය කරන්න «::: KSpace :::


සිසිල් එකක් නමුත් තවමත් එය ඉක්මවා ගොස් window.console.log = function(){//empty}console.log භාවිතා කරන්න
සුපිරි සිසිල්

32

නැවත අර්ථ console._commandLineAPIදැක්වීමට අමතරව , වෙබ්කිට් බ්‍රව්සර්වල එන්නත් කරන ලද ස්ක්‍රිප්ට් හොස්ට් තුළට ඇතුළු වීමට, සංවර්ධකයාගේ කොන්සෝලය තුළට ඇතුළු වූ ප්‍රකාශන ඇගයීම වැළැක්වීමට හෝ වෙනස් කිරීමට වෙනත් ක්‍රම තිබේ.

සංස්කරණය කරන්න:

ක්‍රෝම් මෙය අතීත නිකුතුවකින් නිවැරදි කර ඇත. - එය 2015 පෙබරවාරි මාසයට පෙර විය යුතුය, මම එකල සාරාංශය නිර්මාණය කළ පරිදි

ඉතින් මෙන්න තවත් හැකියාවක්. මේ වතාවේ අපි පෙර අනුවාදයට InjectedScriptවඩා කෙලින්ම ඉහළ මට්ටමට සම්බන්ධ වෙමු InjectedScriptHost.

සිදුවිය යුතු දේ පිළිබඳ වඩාත් සියුම් පාලනයක් ලබා දෙන බැවින් ඔබට InjectedScript._evaluateAndWrapවිශ්වාසය තැබීම වෙනුවට කෙලින්ම වඳුරු පැච් කළ හැකි InjectedScriptHost.evaluateබැවින් එය හොඳ දෙයකි.

තවත් සිත්ගන්නා කරුණක් නම්, ප්‍රකාශනයක් ඇගයීමට ලක් කළ විට අපට අභ්‍යන්තර ප්‍රති result ලයට බාධා කළ හැකි අතර සාමාන්‍ය හැසිරීම වෙනුවට එය පරිශීලකයා වෙත ආපසු ලබා දීමයි.

මෙන්න කේතය, එය හරියටම එය කරයි, පරිශීලකයෙකු කොන්සෝලය තුළ යමක් තක්සේරු කළ විට අභ්‍යන්තර ප්‍රති result ලය ලබා දෙන්න.

var is;
Object.defineProperty(Object.prototype,"_lastResult",{
   get:function(){
       return this._lR;
   },
   set:function(v){
       if (typeof this._commandLineAPIImpl=="object") is=this;
       this._lR=v;
   }
});
setTimeout(function(){
   var ev=is._evaluateAndWrap;
   is._evaluateAndWrap=function(){
       var res=ev.apply(is,arguments);
       console.log();
       if (arguments[2]==="completion") {
           //This is the path you end up when a user types in the console and autocompletion get's evaluated

           //Chrome expects a wrapped result to be returned from evaluateAndWrap.
           //You can use `ev` to generate an object yourself.
           //In case of the autocompletion chrome exptects an wrapped object with the properties that can be autocompleted. e.g.;
           //{iGetAutoCompleted: true}
           //You would then go and return that object wrapped, like
           //return ev.call (is, '', '({test:true})', 'completion', true, false, true);
           //Would make `test` pop up for every autocompletion.
           //Note that syntax as well as every Object.prototype property get's added to that list later,
           //so you won't be able to exclude things like `while` from the autocompletion list,
           //unless you wou'd find a way to rewrite the getCompletions function.
           //
           return res; //Return the autocompletion result. If you want to break that, return nothing or an empty object
       } else {
           //This is the path where you end up when a user actually presses enter to evaluate an expression.
           //In order to return anything as normal evaluation output, you have to return a wrapped object.

           //In this case, we want to return the generated remote object. 
           //Since this is already a wrapped object it would be converted if we directly return it. Hence,
           //`return result` would actually replicate the very normal behaviour as the result is converted.
           //to output what's actually in the remote object, we have to stringify it and `evaluateAndWrap` that object again.`
           //This is quite interesting;
           return ev.call (is, null, '(' + JSON.stringify (res) + ')', "console", true, false, true)
       }
   };
},0);

එය ටිකක් වාචිකයි, නමුත් මම හිතුවා මම ඒකට අදහස් කිහිපයක් ඉදිරිපත් කළා

එබැවින් සාමාන්‍යයෙන්, පරිශීලකයෙකු ඇගයීමට ලක් [1,2,3,4]කරන්නේ නම් , ඔබ පහත ප්‍රතිදානය අපේක්ෂා කරයි:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

InjectedScript._evaluateAndWrapඑකම ප්‍රකාශනය තක්සේරු කිරීමෙන් පසු වඳුරු පැච් කිරීමෙන් පසු පහත ප්‍රතිදානය ලබා දෙයි:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

ඔබ දකින පරිදි කුඩා වම් ඊතලය, ප්‍රතිදානය දක්වමින් තවමත් පවතී, නමුත් මෙවර අපට වස්තුවක් ලැබේ. ප්‍රකාශනයේ [1,2,3,4]ප්‍රති result ලය වන විට, අරාව එහි සියලු ගුණාංග විස්තර කර ඇති වස්තුවක් ලෙස නිරූපණය කෙරේ.

දෝෂ ජනනය කරන ඒවා ඇතුළුව මෙය සහ එම ප්‍රකාශනය ඇගයීමට උත්සාහ කිරීම මම නිර්දේශ කරමි. එය තරමක් සිත්ගන්නා සුළුය.

මීට අමතරව, is - InjectedScriptHost- වස්තුව දෙස බලන්න . එය පරීක්‍ෂකවරයාගේ අභ්‍යන්තරය සමඟ සෙල්ලම් කිරීමට සහ අවබෝධයක් ලබා ගැනීමට ක්‍රම කිහිපයක් සපයයි.

ඇත්ත වශයෙන්ම, ඔබට එම සියලු තොරතුරු වලක්වා මුල් ප්‍රති result ලය පරිශීලකයාට ලබා දිය හැකිය.

console.log (res)පහත දැක්වෙන අයුරින් ආපසු ප්‍රකාශය වෙනත් මාර්ගයක ආදේශ කරන්න return res. එවිට ඔබ පහත සඳහන් දෑ සමඟ අවසන් වනු ඇත.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

සංස්කරණයේ අවසානය


ගූගල් විසින් නිවැරදි කරන ලද පෙර අනුවාදය මෙයයි. එබැවින් තවදුරටත් කළ හැකි මාර්ගයක් නොවේ.

එයින් එකක් වන්නේ එකට බැඳීමයි Function.prototype.call

ක්‍රෝම් ඇතුළු කළ ප්‍රකාශනය callඑහි එවාල් ශ්‍රිතය InjectedScriptHostලෙස තක්සේරු කිරීමෙන් ඇගයීමට ලක් කරයිthisArg

var result = evalFunction.call(object, expression);

මෙම ලබා දී, ඔබ සඳහා සවන් දිය හැකි thisArgවන callලෙස evaluateහා පළමු තර්කය (සැඳහුම ලබා InjectedScriptHost)

if (window.URL) {
    var ish, _call = Function.prototype.call;
    Function.prototype.call = function () { //Could be wrapped in a setter for _commandLineAPI, to redefine only when the user started typing.
        if (arguments.length > 0 && this.name === "evaluate" && arguments [0].constructor.name === "InjectedScriptHost") { //If thisArg is the evaluate function and the arg0 is the ISH
            ish = arguments[0];
            ish.evaluate = function (e) { //Redefine the evaluation behaviour
                throw new Error ('Rejected evaluation of: \n\'' + e.split ('\n').slice(1,-1).join ("\n") + '\'');
            };
            Function.prototype.call = _call; //Reset the Function.prototype.call
            return _call.apply(this, arguments);  
        }
    };
}

ඇගයීම ප්‍රතික්ෂේප කළ බවට ඔබට දෝෂයක් ඇතිවිය හැකිය.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

මෙහි දැක්වෙන්නේ ඇතුළත් කළ ප්‍රකාශනය කෝපි ස්ක්‍රිප්ට් සම්පාදකය වෙත ශ්‍රිතයට යැවීමට පෙර ලබා දෙන උදාහරණයකිevaluate .


25

නෙට්ෆ්ලික්ස් ද මෙම අංගය ක්‍රියාත්මක කරයි

(function() {
    try {
        var $_console$$ = console;
        Object.defineProperty(window, "console", {
            get: function() {
                if ($_console$$._commandLineAPI)
                    throw "Sorry, for security reasons, the script console is deactivated on netflix.com";
                return $_console$$
            },
            set: function($val$$) {
                $_console$$ = $val$$
            }
        })
    } catch ($ignore$$) {
    }
})();

console._commandLineAPIආරක්ෂක දෝෂ විසි කිරීම සඳහා ඒවා ඉක්මවා යයි.


24

ෆේස්බුක් හට එය කිරීමට හැකි වූ බැවින් මෙය සැබවින්ම කළ හැකිය. හොඳයි, සත්‍ය වෙබ් සංවර්ධක මෙවලම් නොව ජාවාස්ක්‍රිප්ට් කොන්සෝලය තුළ ක්‍රියාත්මක කිරීම.

මෙය බලන්න: ෆේස්බුක් බ්‍රව්සරයේ ඒකාබද්ධ සංවර්ධක මෙවලම් අක්‍රීය කරන්නේ කෙසේද?

මෙම වර්ගයේ සේවාදායකයින්ගේ ආරක්ෂාව මඟ හැරීමට වෙනත් ක්‍රම ඇති බැවින් මෙය සැබවින්ම බොහෝ දේ නොකරයි.

ඔබ එය සේවාදායක පාර්ශවයක් යැයි පැවසූ විට, එය සිදුවන්නේ සේවාදායකයේ පාලනයෙන් පිටත බැවින් ඔබට ඒ ගැන බොහෝ දේ කළ නොහැක. ෆේස්බුක් තවමත් මෙය කරන්නේ මන්දැයි ඔබ අසන්නේ නම්, මෙය සැබවින්ම ආරක්ෂාව සඳහා නොව, ජාවාස්ක්‍රිප්ට් නොදන්නා සාමාන්‍ය පරිශීලකයින් කොන්සෝලය තුළට ධාවනය වන කේතයෙන් (ඔවුන් කියවීමට නොදන්නා) ආරක්ෂා කිරීම සඳහා ය. ස්වයංක්‍රීය ඉල්ලුම් සේවාවක් හෝ වෙනත් ෆේස්බුක් ක්‍රියාකාරී බොට්ස් ඔබ ඔවුන්ගෙන් ඉල්ලා සිටින දේ කළ පසු පොරොන්දු වන වෙබ් අඩවි සඳහා මෙය පොදු වේ, බොහෝ අවස්ථාවන්හිදී, ඔවුන් ඔබට කොන්සෝලය තුළ ක්‍රියාත්මක කිරීම සඳහා ජාවාස්ක්‍රිප්ට් එකක් ලබා දෙයි.

ඔබට ෆේස්බුක් තරම් පරිශීලකයින් නොමැති නම්, ෆේස්බුක් කරන දේ කිරීමට අවශ්‍යතාවයක් ඇතැයි මම නොසිතමි.

ඔබ කොන්සෝලය තුළ ජාවාස්ක්‍රිප්ට් අක්‍රීය කළත්, ලිපින තීරුව හරහා ජාවාස්ක්‍රිප්ට් ධාවනය කළ හැකිය.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

රූප විස්තරය මෙහි ඇතුළත් කරන්න

සහ බ්‍රවුසරය ලිපින තීරුවේ ජාවාස්ක්‍රිප්ට් අක්‍රීය කළහොත්, (ඔබ ගූගල් ක්‍රෝම් හි ලිපින තීරුවට කේතය ඇලවූ විට, එය 'ජාවාස්ක්‍රිප්ට්:' යන වාක්‍ය ඛණ්ඩය මකා දමයි.

නැංගුරම පරීක්ෂා කරන්න:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

කේතය href හි අලවන්න:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

රූප විස්තරය මෙහි ඇතුළත් කරන්න

රූප විස්තරය මෙහි ඇතුළත් කරන්න

බොටම් ලයින් යනු සේවාදායක පාර්ශවීය වලංගු කිරීමක් වන අතර ආරක්ෂාව පළමුව විය යුතුය, පසුව සේවාදායකයාගේ පැත්තෙන් කරන්න.


11

ෆේස්බුක් කොන්සෝලය අක්‍රිය කළ හැකි කාලයේ සිට ක්‍රෝම් බොහෝ වෙනස් විය ...

2017 මාර්තු අනුව මෙය තවදුරටත් ක්‍රියාත්මක නොවේ.

ඔබට කළ හැකි හොඳම දේ සමහර කොන්සෝල කාර්යයන් අක්‍රීය කිරීමයි, උදාහරණයක් ලෙස:

if(!window.console) window.console = {};
var methods = ["log", "debug", "warn", "info", "dir", "dirxml", "trace", "profile"];
for(var i=0;i<methods.length;i++){
    console[methods[i]] = function(){};
}

9

මගේ සරල ක්‍රමය, නමුත් මෙම විෂය පිළිබඳ වැඩිදුර වෙනස්කම් සඳහා එය උපකාරී වේ. සියලුම ක්‍රම ලැයිස්තුගත කර ඒවා නිෂ් .ල බවට වෙනස් කරන්න.

  Object.getOwnPropertyNames(console).filter(function(property) {
     return typeof console[property] == 'function';
  }).forEach(function (verb) {
     console[verb] =function(){return 'Sorry, for security reasons...';};
  });

5

අභ්‍යන්තරව devtools getCompletionsපිටුවට නම් කරන ලද IIFE එන්නත් කරයි , එය Devtools කොන්සෝලය තුළ යතුරක් එබූ විට හැඳින්වේ.

එම ශ්‍රිතයේ ප්‍රභවය දෙස බලන විට , එය නැවත ලිවිය හැකි ගෝලීය ශ්‍රිත කිහිපයක් භාවිතා කරයි.

Errorඉදිකිරීම්කරු භාවිතා කිරීමෙන් ඇමතුම් getCompletionsතොගය ලබා ගත හැකිය, එයට Devtools විසින් ඇමතූ විට ඇතුළත් වේ .


උදාහරණයක්:

const disableDevtools = callback => {
  const original = Object.getPrototypeOf;

  Object.getPrototypeOf = (...args) => {
    if (Error().stack.includes("getCompletions")) callback();
    return original(...args);
  };
};

disableDevtools(() => {
  console.error("devtools has been disabled");

  while (1);
});


එය ඉතා පිළිවෙලයි, නමුත් එය පිටුව බිඳ වැටේ.
ඩෙරෙක් 朕 會 功夫

@ ඩෙරෙක් 朕 further තවදුරටත් පරිශීලක ආදානය යටපත් කිරීමට ඇති එකම මාර්ගය (මම සොයාගෙන ඇත)
samdd

අනන්ත පුඩුවක් භාවිතා කිරීම වෙනුවට ඔබට දෝෂයක් විසි කළ හැකිදැයි මම කල්පනා කරමි. සංස්කරණය කරන්න: පරීක්ෂා කර ඇත, ක්‍රියා නොකරයි.
ඩෙරෙක් 朕 會 功夫

@ ඩෙරෙක් 朕 功夫 එය උත්සාහක දිනුම් අවහිරයක පවතී. ඔබට බොහෝ විට වාරණයට ඉහළින් ඇති කාර්යයන් අභිබවා යා හැකිය, නමුත් එය ස්වයංක්‍රීයව සම්පූර්ණ කිරීම වළක්වනු ඇත (ඇගයීම නොවේ)
samdd

2

සරල විසඳුමක්!

setInterval(()=>console.clear(),1500);

1
මෙය අක්‍රීය කරන්නේ console.log()කෙසේද?
රතු

1
console.log()කොන්සෝලය නිරන්තරයෙන් පිරිසිදු කරන විට තවදුරටත් වැදගත් නොවේ :)
මොහොමඩ් ඊබ්‍රාහිමි අවල්

මෙය නරක අදහසකි. හැකර්ට ඔවුන්ගේ පර්යන්තයෙන් සොයාගත හැකි අතර සියලු ල .ු-සටහන් දැකිය හැකිය.
ජීඑෆ්එක්ස් ජමාල්


0

මම යන ගමන:

Object.defineProperty(window, 'console', {
  get: function() {

  },
  set: function() {

  }
});

-2

දුර්වල කේත නොසලකා හැරීමට මෙය ආරක්ෂිත පියවරක් නොවේ. මෙම ක්‍රමෝපාය ක්‍රියාත්මක කිරීමට පෙර සෑම විටම දුර්වල කේත සඳහා ස්ථිර විසඳුමක් ලබාගෙන ඔබේ වෙබ් අඩවි නිසි ලෙස සුරක්ෂිත කරන්න

මගේ දැනුමට අනුව මෙතෙක් ඇති හොඳම මෙවලම වනුයේ අන්තර්ගතය නැවුම් කිරීම හෝ ප්‍රතිස්ථාපනය කිරීම මගින් පිටුවේ අඛණ්ඩතාව යථා තත්ත්වයට පත් කරන බහු ජාවාස්ක්‍රිප්ට් ගොනු එක් කිරීමයි. කේතය බ්‍රව්සරයේ කොටසක් වන අතර සේවාදායකය විදැහුම්කරණය නොවන බැවින් බයිපාස් කිරීම සැමවිටම ප්‍රශ්නයක් වන බැවින් මෙම සංවර්ධක මෙවලම අක්‍රීය කිරීම විශාලතම අදහස නොවේ.

ඔබ කළ යුතු js file oneසඳහා පරීක්ෂා <element>වැදගත් අංග මත වෙනස්කම් js file twoහා js file threeඔබ පූර්ණ අඛණ්ඩතාව කාලය තුළ පිටුවේ යළි ඇත මෙම ගොනුව කාලය අනුව පවතින පරීක්ෂා කිරීම.

ලිපිගොනු 4 ට උදාහරණයක් ගෙන මා අදහස් කරන දේ ඔබට පෙන්වමු.

index.html

   <!DOCTYPE html>
   <html>
   <head id="mainhead">
   <script src="ks.js" id="ksjs"></script>
   <script src="mainfile.js" id="mainjs"></script>
   <link rel="stylesheet" href="style.css" id="style">
   <meta id="meta1" name="description" content="Proper mitigation against script kiddies via Javascript" >
   </head>
   <body>
   <h1 id="heading" name="dontdel" value="2">Delete this from console and it will refresh. If you change the name attribute in this it will also refresh. This is mitigating an attack on attribute change via console to exploit vulnerabilities. You can even try and change the value attribute from 2 to anything you like. If This script says it is 2 it should be 2 or it will refresh. </h1>
   <h3>Deleting this wont refresh the page due to it having no integrity check on it</h3>

   <p>You can also add this type of error checking on meta tags and add one script out of the head tag to check for changes in the head tag. You can add many js files to ensure an attacker cannot delete all in the second it takes to refresh. Be creative and make this your own as your website needs it. 
   </p>

   <p>This is not the end of it since we can still enter any tag to load anything from everywhere (Dependent on headers etc) but we want to prevent the important ones like an override in meta tags that load headers. The console is designed to edit html but that could add potential html that is dangerous. You should not be able to enter any meta tags into this document unless it is as specified by the ks.js file as permissable. <br>This is not only possible with meta tags but you can do this for important tags like input and script. This is not a replacement for headers!!! Add your headers aswell and protect them with this method.</p>
   </body>
   <script src="ps.js" id="psjs"></script>
   </html>

mainfile.js

   setInterval(function() {
   // check for existence of other scripts. This part will go in all other files to check for this file aswell. 
   var ksExists = document.getElementById("ksjs"); 
   if(ksExists) {
   }else{ location.reload();};

   var psExists = document.getElementById("psjs");
   if(psExists) {
   }else{ location.reload();};

   var styleExists = document.getElementById("style");
   if(styleExists) {
   }else{ location.reload();};


   }, 1 * 1000); // 1 * 1000 milsec

ps.js

   /*This script checks if mainjs exists as an element. If main js is not existent as an id in the html file reload!You can add this to all js files to ensure that your page integrity is perfect every second. If the page integrity is bad it reloads the page automatically and the process is restarted. This will blind an attacker as he has one second to disable every javascript file in your system which is impossible.

   */

   setInterval(function() {
   // check for existence of other scripts. This part will go in all other files to check for this file aswell. 
   var mainExists = document.getElementById("mainjs"); 
   if(mainExists) {
   }else{ location.reload();};

   //check that heading with id exists and name tag is dontdel.
   var headingExists = document.getElementById("heading"); 
   if(headingExists) {
   }else{ location.reload();};
   var integrityHeading = headingExists.getAttribute('name');
   if(integrityHeading == 'dontdel') {
   }else{ location.reload();};
   var integrity2Heading = headingExists.getAttribute('value');
   if(integrity2Heading == '2') {
   }else{ location.reload();};
   //check that all meta tags stay there
   var meta1Exists = document.getElementById("meta1"); 
   if(meta1Exists) {
   }else{ location.reload();};

   var headExists = document.getElementById("mainhead"); 
   if(headExists) {
   }else{ location.reload();};

   }, 1 * 1000); // 1 * 1000 milsec

ks.js

   /*This script checks if mainjs exists as an element. If main js is not existent as an id in the html file reload! You can add this to all js files to ensure that your page integrity is perfect every second. If the page integrity is bad it reloads the page automatically and the process is restarted. This will blind an attacker as he has one second to disable every javascript file in your system which is impossible.

   */

   setInterval(function() {
   // check for existence of other scripts. This part will go in all other files to check for this file aswell. 
   var mainExists = document.getElementById("mainjs"); 
   if(mainExists) {
   }else{ location.reload();};
   //Check meta tag 1 for content changes. meta1 will always be 0. This you do for each meta on the page to ensure content credibility. No one will change a meta and get away with it. Addition of a meta in spot 10, say a meta after the id="meta10" should also be covered as below.
   var x = document.getElementsByTagName("meta")[0];
   var p = x.getAttribute("name");
   var s = x.getAttribute("content");
   if (p != 'description') {
   location.reload();
   }
   if ( s != 'Proper mitigation against script kiddies via Javascript') {
   location.reload();
   }
   // This will prevent a meta tag after this meta tag @ id="meta1". This prevents new meta tags from being added to your pages. This can be used for scripts or any tag you feel is needed to do integrity check on like inputs and scripts. (Yet again. It is not a replacement for headers to be added. Add your headers aswell!)
   var lastMeta = document.getElementsByTagName("meta")[1];
   if (lastMeta) {
   location.reload();
   }
   }, 1 * 1000); // 1 * 1000 milsec

style.css

දැන් මෙය හුදෙක් සියලුම ලිපිගොනු සහ ටැග් වල ක්‍රියා කරන බව පෙන්වීමට පමණි

   #heading {
   background-color:red;
   }

ඔබ මෙම ලිපිගොනු සියල්ලම එකට දමා උදාහරණය ගොඩනඟන්නේ නම් මෙම මිනුමේ ක්‍රියාකාරිත්වය ඔබට පෙනෙනු ඇත. විශේෂයෙන් PHP සමඟ වැඩ කිරීමේදී ඔබේ දර්ශක ගොනුවේ ඇති සියලුම වැදගත් අංග මත එය නිවැරදිව ක්‍රියාත්මක කළහොත් මෙය සමහර නොවරදින එන්නත් වලක්වනු ඇත.

එක් ගුණාංගයකට සාමාන්‍ය අගයට වෙනස් කිරීම වෙනුවට මම රීලෝඩ් තෝරාගත්තේ ඇයිද යන්න සමහර ප්‍රහාරකයන්ට වෙබ් අඩවියේ තවත් කොටසක් දැනටමත් වින්‍යාසගත කර සුදානම් කර ඇති අතර එය කේත ප්‍රමාණය අඩු කරයි. රීලෝඩ් කිරීමෙන් ප්‍රහාරකයාගේ සියලු මහන්සිය ඉවත් වන අතර ඔහු බොහෝ විට පහසු තැනකට යනු ඇත.

තවත් සටහනක්: මෙය බොහෝ කේතයක් බවට පත්විය හැකි බැවින් එය පිරිසිදුව තබාගෙන අනාගතයේදී සංස්කරණයන් පහසු කිරීම සඳහා ඒවා අයත් වන ස්ථානයට අර්ථ දැක්වීම් එක් කිරීමට වග බලා ගන්න. විශාල පිටු වල තත්පර 1 ක පරතරයක් ඔබගේ අමුත්තන් භාවිතා කරන පැරණි පරිගණක වලට දැඩි බලපෑම් ඇති කළ හැකි බැවින් තත්පර ඔබ කැමති ප්‍රමාණයට සකසන්න.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.