잠시 동안 JSP를 사용하고 있습니다. 나는이 선택 진술을 가지고있다 :JavaScript/jQuery를 사용하여 SQL 삽입 방지
query = "SELECT * FROM USER_PASS WHERE USERNAME = '" + name + "'";
이것은 SQL 주입에 취약하다. 필자는 몇 가지 기사를 검색하여 준비된 문을 사용하여 SQL 주입을 피할 수 있음을 발견했습니다. 나는 그것이 더 혼란 스럽다는 것을 안다. 사용자가 입력 한 내용에 ;
, '
또는 --
과 같은 입력 사항을 찾을 수 있다면이 기호를 사용할 수 없다는 경고 메시지를 표시 할 수 있으며 데이터를 처리하지 않습니다. 내 자바 스크립트 코드 일 수 있습니다 :
function validateSQL()
{
var x=document.forms["myForm"]["username"].value;
var pos = 0;
pos=x.indexOf("'");
if (pos!=0)
{
alert("Trying to hack me?");
return false;
}
}
어느 것이 더 사용 하시겠습니까? 이것에는 어떤 단점이 있습니까?
누가 침입자가 프론트 엔드를 사용하겠습니까? 자동 SQL 인젝션 툴은 HTTP 요청을 전송합니다. – Blender
@Blender : 자바 스크립트 코드 대신 preparedstatement를 작성한다면 주입을 방지 할 수 있습니까? –
내가 블렌더의 코멘트를 +10 할 수 있다면 * 클라이언트를 신뢰할 수 없다 *. 서버에 준비된 명령문은 * 모든 * SQL 주입 공격을 막아줍니다 (그러나 반드시 다른 표면은 아님). 아닙니다 : 잘못된 정보를 방지하는 것은 SQL 주입 공격의 범위를 벗어납니다. –