Node.js를 프로젝트는 SQL 주입 및 XSS 공격을 해결하기

1.SQL 주입

SQL 주입, 일반적으로 제출 또는 웹 양식에 삽입 된 SQL 명령을 통해 도메인 이름이나 페이지 요청 쿼리 문자열을 입력하고, 궁극적으로 악의적 인 SQL 명령을 실행하기 위해기만 서버를 얻을 수 있습니다.

SQL 인젝션 예

로그인 화면, 백엔드 (사용자 이름)과 암호 (패스워드)에서, MySQL 데이터베이스는 사용자가 사용자 입력을 기반으로 사용자의 신원을 확인합니다.

다음과 같이 사용자가 될 것 백엔드 처리, 접합 SQL 문에서, 사용자 이름 [세드릭, 비밀번호 [123456]를 입력 할 때 인증 사용자 이름과 암호 성공, 즉 성공적으로 로그인.

// 用户名为 cedric , 密码为 123456
select username from users where username='cedric' and password='123456';

악의적 인 사용자가 입력 창에 사용자 이름을 입력하는 경우에는, [세드릭 '-], 및 임의의 에러 코드 [111], 후단의 처리에서, 다음의 SQL 명령문 스티치를 실시한다 (가 마지막 얼굴 공간 참고) 로그인에 성공.

// 符号 ‘--’ 后面的语句相当于被注释了
select username from users where username='cedric -- ' and password='111';

악의적 인 사용자가 사용자 이름을 입력 할 경우 또는, [세드릭을 '; 사용자에서 삭제 -] 백엔드 처리, 접합 SQL 문은 다음과 같은 작업을 수행 할 때 입력 상자와 임의의 에러 코드 [111]에서, 결과는 데이터베이스를 일으킬 수 있습니다 모든 사용자가 삭제됩니다.

// 符号 ‘--’ 后面的语句相当于被注释了
select username from users where username='cedric';delete from users; -- ' and password='111';

SQL 주입 방지

노드 환경, 탈출 기능 처리 MySQL의 입력을 사용하여 매개 변수는 특수 문자를 탈출 할 수 있습니다.

입력 SQL의 모든 부분에서 우리는 탈출 기능 등으로 처리 할 수 ​​있습니다 :

const login = (username, password) => {

    // 预防 sql 注入
    username = escape(username)
    password = escape(password)

    const sql = `
        select username from users where username=${username} and password=${password};
    `

    // 然后按上面语句执行 sql 查询
    ···
}

2. XSS 공격

XSS는 웹 응용 프로그램에서 컴퓨터의 보안 취약점, 그것은 악의적 인 웹 사용자 코드 사용자에 의해 사용되는 다른 페이지에 제공하기 위해 이식 (코드는 HTML 코드와 클라이언트 측 스크립트를 포함한다) 할 수 있습니다.

XSS는 예를 공격

같은 텍스트 상자에 입력으로 출시 XSS 공격은 주로 입력 / 텍스트 영역 텍스트 상자의 형태에 관한 것이다 :

<script> alert(1) </script>

프런트 엔드 필터 (예 : 노드)를 백 엔드에 직접 제출되지, 서버가 페이지를 입력하기 위해 데이터베이스 저장소, 그 다음 (또는 다른 사용자)에 직접 필터링하지 않을 경우,이 실행됩니다 alert(1), 팝업 페이지를.

쿠키 값은 웹 페이지를 훔쳐

또는 악의적 인 입력 텍스트 상자 :

<script> alert(document.cookie) </script>

당신은 사용자 쿠키를 얻을 수 있습니다.

악성 트래픽 하이재킹 달성 점프

악성 입력 텍스트 상자 :

<script>window.location.href="www.abc.com";</script>

사이트 방문을 선도하면 자동으로 www.abc.com으로 이동합니다.

XSS 공격 방지

즉에서 사용자 HTML 인코딩 엔티티에 의해 입력 된 데이터 <script>, <a>라벨처럼 < >후 변환하고 다시 데이터베이스에 저장된다.

노드 환경에서 설치 :

$ npm install xss

그런 다음 수정 :

const xss = require('xss')

const inputValue = content  // 未进行 xss 防御
const inputValue = xss(content)  // 已进行 xss 防御

그런 다음 입력 상자에 악의적 인 입력을 입력하면 <script> alert(1) </script>, 데이터베이스 다음 문에서 변환 및 저장됩니다 :

&lt;script&gt; alert(1) &lt;/script&gt;그것은 수행 할 수 없습니다 도달 <script>목적.

추천

출처www.cnblogs.com/cckui/p/10990006.html