").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!c.settings.submitHandler||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(null!=j&&(!j.form&&j.hasAttribute("contenteditable")&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}}),a.extend(a.expr.pseudos||a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){var c=a(b).val();return null!==c&&!!a.trim(""+c)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){!this.form&&this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name"));var c=a.data(this.form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=d),!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type;return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=b.hasAttribute("contenteditable")?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);if("function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f){if(j=f.call(b,j),"string"!=typeof j)throw new TypeError("The normalizer should return a string value.");delete g.normalizer}for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;aWarning: No message defined for "+b.name+""),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return a.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(d,e){b[d]=a.isFunction(e)&&"normalizer"!==d?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e<=d},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var b,c={};return a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)}),a});!function(e){var n;if("function"==typeof define&&define.amd&&(define(e),n=!0),"object"==typeof exports&&(module.exports=e(),n=!0),!n){var t=window.Cookies,o=window.Cookies=e();o.noConflict=function(){return window.Cookies=t,o}}}(function(){function e(){for(var e=0,n={};e
Ransomware đã trở thành một trong những mối đe dọa ngày càng lớn đối với dữ liệu cá nhân và tổ chức. Với sự gia tăng về tầm quan trọng của dữ liệu thông tin, việc bảo vệ chống lại ransomware trở thành một nhiệm vụ cấp bách. Để giúp người dùng và tổ chức đối phó với mối đe dọa này, có một số biện pháp quan trọng cần được áp dụng, Tothost sẽ đề cập đến trong bài viết này.
Mục lục
Mục lục
1. Các lỗ hổng bảo mật – bạn có phải là mục tiêu tiềm năng của một cuộc tấn công ransomware?
Có một số yếu tố có thể khiến bạn trở thành mục tiêu của một cuộc tấn công ransomware.
Thiết bị sử dụng không còn là công nghệ mới nhất.
Thiết bị có phần mềm đã lỗi thời.
Trình duyệt và/hoặc hệ điều hành không còn được vá lỗi.
Không có kế hoạch sao lưu hợp lý.
Bảo mật mạng chưa đáp ứng, và không có một kế hoạch nâng cấp cụ thể.
Nếu một hoặc nhiều trong số những điểm này áp dụng cho thiết bị của bạn, bạn có nguy cơ trở thành nạn nhân của một cuộc tấn công ransomware. Việc quét lỗ hổng, có thể được thực hiện bởi phần mềm bảo mật Kaspersky, có thể khắc phục điều này.
Phần mềm quét thiết bị để phát hiện các lỗ hổng bảo mật có thể tồn tại trong hệ điều hành hoặc các chương trình đã cài đặt trên máy tính. Bằng cách phát hiện các lỗ hổng này, cho phép phần mềm độc hại xâm nhập, có thể ngăn chặn máy tính khỏi việc bị nhiễm mã độc.
2. Bảo vệ chống ransomware – làm thế nào để ngăn chặn nhiễm mã độc
Không bao giờ nhấp vào các liên kết không an toàn: Tránh nhấp vào các liên kết trong các tin nhắn rác hoặc trên các trang web không xác định. Nếu bạn nhấp vào các liên kết độc hại, một tệp tự động có thể được tải xuống, dẫn đến máy tính của bạn bị nhiễm mã độc.
2.1. Tránh tiết lộ thông tin cá nhân
Nếu bạn nhận được một cuộc gọi, tin nhắn văn bản hoặc email từ một nguồn không tin cậy yêu cầu thông tin cá nhân, đừng trả lời. Kẻ tội phạm mạng đang lên kế hoạch tấn công ransomware có thể cố gắng thu thập thông tin cá nhân trước, sau đó sử dụng nó để tạo ra các tin nhắn lừa đảo đặc biệt dành riêng cho bạn. Nếu có bất kỳ nghi ngờ nào về tính hợp pháp của tin nhắn, hãy liên hệ trực tiếp với người gửi.
2.2. Không mở các tệp đính kèm email đáng ngờ
Ransomware cũng có thể xâm nhập vào thiết bị của bạn thông qua các tệp đính kèm email. Tránh mở bất kỳ tệp đính kèm nào có vẻ đáng ngờ. Để đảm bảo tính tin cậy của email, hãy chú ý đến người gửi và kiểm tra xem địa chỉ có chính xác không. Không bao giờ mở các tệp đính kèm yêu cầu bạn chạy các macro để xem chúng. Nếu tệp đính kèm bị nhiễm, việc mở nó sẽ chạy một macro độc hại cho phép mã độc kiểm soát máy tính của bạn.
2.3. Không sử dụng USB không rõ nguồn gốc
Không kết nối USB hoặc phương tiện lưu trữ khác vào máy tính nếu bạn không biết chúng đến từ đâu. Kẻ tội phạm mạng có thể đã nhiễm đầu đọc lưu trữ và đặt nó ở nơi công cộng để kích thích ai đó sử dụng nó.
2.4. Giữ cho các chương trình và hệ điều hành của bạn luôn được cập nhật
Thường xuyên cập nhật các chương trình và hệ điều hành.
2.5. Chỉ sử dụng các nguồn tải xuống đã biết
Để giảm thiểu nguy cơ tải xuống ransomware, không bao giờ tải phần mềm hoặc tệp phương tiện từ các trang web không xác định. Hãy dựa vào các trang web được xác minh và đáng tin cậy để tải xuống. Các trang web của loại này có thể được nhận ra bằng các dấu niêm phong đáng tin cậy. Đảm bảo thanh địa chỉ trình duyệt của trang bạn đang truy cập sử dụng “https” thay vì “http”. Biểu tượng một cái mái che hoặc khóa trong thanh địa chỉ cũng có thể cho thấy trang đó là an toàn. Hãy cẩn thận khi tải bất cứ điều gì lên thiết bị di động của bạn. Bạn có thể tin tưởng Google Play Store hoặc Apple App Store, tùy thuộc vào thiết bị của bạn.
2.6. Sử dụng dịch vụ VPN trên các mạng Wi-Fi công cộng
Sử dụng có ý thức các mạng Wi-Fi công cộng là một biện pháp bảo vệ hợp lý chống lại ransomware. Khi sử dụng mạng Wi-Fi công cộng, máy tính của bạn dễ bị tấn công hơn. Để được bảo vệ, tránh sử dụng mạng Wi-Fi công cộng cho các giao dịch nhạy cảm hoặc sử dụng dịch vụ VPN an toàn.
3. Phần mềm chống ransomware – lợi ích là gì?
Ngoài các biện pháp ngăn chặn nhiễm trùng này, cũng cần sử dụng phần mềm phù hợp để bảo vệ chống lại ransomware. Ví dụ, sử dụng các chương trình quét virus và bộ lọc nội dung trên máy chủ thư của bạn là một cách thông minh để ngăn chặn ransomware. Những chương trình này giảm nguy cơ nhận thư rác với các tệp đính kèm độc hại hoặc liên kết bị nhiễm đến hộp thư của bạn.
Các giải pháp bảo mật internet như Kaspersky Internet Security cũng nên được cài đặt. Phần mềm này có khả năng chặn các tệp nhiễm độc khi bạn tải xuống hoặc xem một cái gì đó, do đó cung cấp bảo vệ thời gian thực. Điều này ngăn chặn ransomware xâm nhập vào máy tính của bạn và giữ kẻ tội phạm mạng không thể xâm hại. Kaspersky cũng cung cấp một công cụ chống ransomware đặc biệt có thể cung cấp sự trợ giúp bổ sung. Công cụ này giúp phát hiện và chặn ransomware bằng cách thực hiện quét và bảo vệ dữ liệu của bạn khỏi các cuộc tấn công ransomware thông qua truy cập cục bộ và từ xa.
Nếu bạn đã cài đặt phần mềm phù hợp, bạn đã đi một bước lớn theo hướng đúng. Hãy thường xuyên cập nhật giải pháp bảo mật internet của bạn để tận dụng những tính năng bảo vệ tốt nhất và mới nhất mà nó cung cấp. Mỗi bản cập nhật chứa các bản vá bảo mật mới nhất và cải thiện khả năng bảo vệ chống lại ransomware.
4. Bảo vệ dữ liệu – khắc phục mối đe dọa trong trường hợp xấu nhất
4.1. Cần chú ý gì khi tạo bản sao lưu dữ liệu
Đảm bảo dữ liệu của bạn luôn được bảo vệ bằng các bản sao lưu, trong trường hợp máy tính của bạn bị nhiễm ransomware và quá trình giải mã là không thể. Sử dụng một ổ đĩa cứng ngoại vi và đảm bảo rằng bạn ngắt kết nối nó khỏi máy tính sau khi tạo bản sao lưu. Nếu ổ đĩa cứng của bạn đang được kết nối khi ransomware hoạt động, dữ liệu trên ổ đĩa cũng sẽ được mã hóa. Bạn nên sao lưu dữ liệu theo cách này định kỳ.
4.2. Phần mềm sao lưu – bảo vệ hay mối đe dọa?
Nếu bạn không muốn bảo vệ dữ liệu của mình bằng cách thủ công, bạn có thể sử dụng những gì được gọi là phần mềm sao lưu. Tuy nhiên, ở đây bạn cũng cần cẩn trọng. Điều này bởi vì một số “công cụ bảo mật” cũng có thể biến thành Trojan. Tạo bản sao lưu là một nhiệm vụ chính của phần mềm sao lưu, điều này có nghĩa là nó có quyền truy cập vào tất cả các tệp và có nhiều đặc quyền.
Phần mềm thường có kết nối trực tiếp với nhà cung cấp, do đó, kẻ tội phạm mạng dễ dàng tích hợp các chức năng và lệnh bổ sung. Những thứ này có thể gây hại và có thể không được người dùng nhận ra.
Để tránh tình huống như vậy, bạn nên cẩn thận khi tìm kiếm phần mềm sao lưu phù hợp. Một số giải pháp bảo mật, như Kaspersky Total Security Tool, đã cung cấp các tiện ích mở rộng có thể tạo bản sao lưu. Bằng cách sử dụng loại tiện ích mở rộng này, bạn có thể tránh việc phải tìm kiếm các nhà cung cấp bên thứ ba.
5. Bảo vệ chống lại ransomware – những gì các công ty cần chú ý
Cuộc tấn công ransomware không chỉ là mối đe dọa đối với cá nhân. Trên thực tế, các công ty cũng thường bị nhắm mục tiêu. Không chỉ có các công ty lớn, có lợi nhuận cao trở thành nạn nhân của ransomware; các doanh nghiệp nhỏ và vừa (SMEs) cũng bị nhắm đến. Thông thường, họ có hệ thống bảo mật kém, và vì vậy là mục tiêu hấp dẫn đặc biệt đối với các kẻ tấn công. Dưới đây là một danh sách các yếu tố mà các công ty nên xem xét để tránh nhiễm ransomware.
5.1. Luôn cập nhật phần mềm hoạt động mới nhất
trong môi trường doanh nghiệp cũng vậy. Kinh nghiệm trước đây đã cho thấy (ví dụ, WannaCry 2017) rằng các công ty lơ là trong lĩnh vực này đặc biệt dễ bị tấn công ransomware.
5.2. Nâng cao nhận thức của nhân viên
một người hiểu biết những điều cần chú ý sẽ hiệu quả hơn trong việc chống lại các cuộc tấn công. Thực hiện một giao thức bảo mật cho phép nhân viên đánh giá xem một tệp đính kèm, liên kết hoặc email có đáng tin cậy hay không.
5.3. Sẵn sàng
đảm bảo rằng có một kế hoạch trong trường hợp bị nhiễm ransomware.
5.4. Xem xét công nghệ đám mây
Lợi thế so với hệ thống trên chỗ là kiến trúc dựa trên đám mây khó khai thác các lỗ hổng hơn. Ngoài ra, các giải pháp lưu trữ đám mây cho phép bạn khôi phục các phiên bản cũ hơn của tệp tin. Điều này có nghĩa là nếu các tệp tin bị mã hóa bởi ransomware, bạn có thể trở về phiên bản không mã hóa bằng cách sử dụng lưu trữ đám mây.
5.5. Sao lưu dữ liệu
ngay cả trong môi trường kinh doanh, việc sao lưu dữ liệu quan trọng cho doanh nghiệp lên các thiết bị ngoại vi là rất quan trọng. Trách nhiệm cho nhiệm vụ cần thiết này nên được nêu rõ và thông báo.
6. Ransomware hiện nay – phát triển của phần mềm độc hại
Điều thường thấy của cuộc tấn công ransomware – mã hóa dữ liệu và yêu cầu chuộc tiền – vẫn không thay đổi, các tội phạm mạng thường xuyên thay đổi cách hoạt động của họ.
Từ PayPal đến Bitcoin – bởi vì khó theo dõi hơn, yêu cầu chuộc tiền từ các tội phạm mạng hiện nay được thực hiện bằng Bitcoin. Trước đây, PayPal chủ yếu được sử dụng cho mục đích này.
Phân phối – ban đầu, email rác được coi là điểm tấn công chính. Mặc dù ngày nay chúng vẫn giữ được sự phổ biến của mình, nhưng lỗ hổng VPN và phân phối qua botnet cũng trở nên phổ biến.
Giống như cách các tội phạm mạng đang thúc đẩy sự phát triển của ransomware, các biện pháp bảo vệ chống lại ransomware cũng đang tiến triển để trở nên hiệu quả và hiệu suất hơn.
Kết luận
Tương tự như các dạng phần mềm độc hại khác, hành động cẩn thận và sử dụng phần mềm bảo mật là một bước đi đúng hướng để chống lại ransomware. Đặc biệt quan trọng đối với loại phần mềm độc hại này là việc tạo sao lưu dữ liệu, vì điều này cho phép bạn chuẩn bị tốt ngay cả trong trường hợp xấu nhất. Đọc thêm các bài viết tại: https://tothost.vn/kien-thuc
Việc thay đổi mật khẩu là biện pháp quan trọng để tăng cường bảo mật và tránh được những rủi ro không mong muốn. Do đó, bước đầu tiên nên làm sau khi đăng ký dịch vụ là đổi mật khẩu. Bạn hãy làm theo hướng dẫn của TotHost để thay đổi mật khẩu trên server Linux nhé!
Ứng dụng Điện toán đám mây (Cloud Computing) là sử dụng công nghệ đám mây phục vụ cho nhiều công việc khác nhau, được kết nối qua internet. Đám mây mang lại lợi thế bao gồm khả năng mở rộng, tính linh hoạt, hiệu quả chi phí, bảo mật và đổi mới cho các tổ chức ở mọi quy mô và lĩnh vực. Do đó, nó được các tổ chức áp dụng để đạt được mục tiêu và giải quyết các vấn đề của họ.Dưới đây là Top 10 ứng dụng phổ biến nhất của điện toán đám mây.
Nếu bạn đang thắc mắc liệu có nên chuyển đổi sang Điện toán đám mây (Cloud Computing) hay vẫn nên chọn on-premise thì bài viết này sẽ giúp bạn hiểu rõ hơn về những lợi ích của việc chuyển đổi này.
Khi bạn kết nối máy tính hoặc thiết bị của mình với internet, bạn cần có địa chỉ IP. Địa chỉ IP có hai loại phân bổ: động và tĩnh. Tại bài viết này, TotHost sẽ hướng dẫn bạn Cách kiểm tra địa chỉ IP bạn đang sử dụng là động hay tĩnh.
cPanel là một control panel – hệ thống quản trị web hosting phổ biến và mạnh mẽ nhất hiện nay, hoạt động dựa trên nền tảng Linux. Nó có giao diện đơn giản, linh hoạt hỗ trợ quản trị hosting và website một cách dễ dàng. Tại đây, TotHost sẽ hướng dẫn bạn cách tạo Backup và Restore trên cPanel.
Hiện nay, công nghệ trí tuệ nhân tạo đang bùng nổ mạnh mẽ tạo ra những tiềm năng to lớn trong nhiều lĩnh vực trong cuộc sống. Để làm được điều đó thì không thể thiếu AI tạo sinh (Generative AI). Vậy, Gen AI là gì? Nó có đóng góp gì trong thực tiễn? Hãy cùng tìm hiểu qua bài viết này nhé!