웹 보안의 XML 인젝션 샘플 코드에 대한 자세한 소개

黄舟
풀어 주다: 2017-03-08 16:48:41
원래의
2314명이 탐색했습니다.

XML 인젝션 공격은 SQL 인젝션과 동일한 원리로, 공격자는 악성코드를 입력하여 자신의 권한을 벗어난 기능을 수행합니다. XML은 데이터를 저장하는 방식으로, 데이터를 수정하거나 쿼리할 때 이스케이프하지 않고 직접 입력하거나 출력하면 XML 인젝션 취약점이 발생한다. 공격자는 XML 데이터 형식을 수정하고 새로운 XML 노드를 추가하여 데이터 처리 프로세스에 영향을 미칠 수 있습니다.

공격

다음은 등록된 사용자 정보를 XML 형식으로 저장하는 예이다.

final String GUESTROLE = "guest_role";
...
//userdata是准备保存的xml数据,接收了name和email两个用户提交来的数据。
String userdata = "<USER role="+
                GUESTROLE+
                "><name>"+
                request.getParameter("name")+
                "</name><email>"+
                request.getParameter("email")+
                "</email></USER>";
//保存xml
userDao.save(userdata);
로그인 후 복사

보시다시피 이 코드는 어떠한 필터링 작업도 수행하지 않는다. 일반 사용자가 등록하면 다음과 같은 데이터 레코드가 생성됩니다.

<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest_role">
    <name>user1
    </name>
    <email>user1@a.com
    </email>
</USER>
로그인 후 복사

공격자가 자신의 이메일을 입력하면 다음 코드를 입력할 수 있습니다.

user1@a.com</email></USER><USER role="admin_role"><name>lf</name><email>user2@a.com
로그인 후 복사

최종 사용자가 등록한 후, 데이터는 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest_role">
    <name>user1
    </name>
    <email>user1@a.com</email>
</USER>
<USER role="admin_role">
    <name>lf</name>
    <email>user2@a.com
    </email>
</USER>
로그인 후 복사

보시다시피 role="admin_role"인 추가 관리자 lf가 있습니다. 공격 목적을 달성합니다.

방어

옛말처럼 공격이 있는 곳에 방어가 있다. 방어의 원칙은 실제로 매우 간단합니다. 키 문자열을 이스케이프하는 것입니다:

& --> &
 < --> <
 > --> >
 " --> "
 &#39; --> &#39;
로그인 후 복사

XML을 저장하고 표시하기 전에 데이터 부분만 이스케이프합니다: ​​

String userdata = "<USER role="+
                GUESTROLE+
                "><name>"+
                StringUtil.xmlencode(request.getParameter("name"))+
                "</name><email>"+
                StringUtil.xmlencode(rrequest.getParameter("email"))+
                "</email></USER>";
로그인 후 복사

이렇게 됩니다. .


위 내용은 웹 보안의 XML 인젝션 샘플 코드에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!