티스토리 뷰

반응형

JAVASCRIPT SQL Injection 텍스트 체크 코드

	// 아이디 배열로 체크
	function checkSqlTextByElIdArray(elIdArray){
		for (let i = 0; i < elIdArray.length; i++){
			if (validateSqlInjection($("#"+elIdArray[i]).val()) === false){
				return false;
				break;
			} else {
				return true;
			}
		}
		/*
        사용시
        if ( !checkSqlTextByElIdArray(["title", "brandName"]) ){
            return false;
        }
        */
	}

	// formData 값 체크
	function checkSqlTextByFormData(formData){
		for (let value of formData.values()) {
			if (typeof value === "string"){
				if(validateSqlInjection(value) === false){
					return false;
					break;
				}
			} else {
				return true;
			}
		}
		/*
        사용시
        if ( !checkSqlTextByFormData(formData) ){
            return false;
        }
        */
	}

	// 부모id 값 체크
	function checkSqlTextByParentElId(parentId){
		let els = $("#"+parentId).find("input[type=text] ,textarea");
		for (let i = 0; i < els.length; i++){
			console.log($(els[i]).val())
			if (validateSqlInjection($(els[i]).val()) === false){
				return false;
				break;
			} else {
				return true;
			}
		}
		/*
        사용시
		if ( !checkSqlTextByParentElId("newItemUpdateForm") ){
            return false;
        }
		*/
	}
	
	// sql injection 문구 체크
	function validateSqlInjection(text){
		const reg = /[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/\s]/gim;
		const sqlRegex = /((((\%27)|(\'))|union|selectsleep|select|delete|insert|or|alter|drop|and|truncate))/g;

		let value = text.replace(reg,"");
		if (sqlRegex.exec(value)){
			alert("입력 불가 텍스트를 포함하고 있습니다.\n"+text)
			return false;
		} else {
			return true;
		}
	}

 

끗123@$%@#$~@#

반응형