- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
ID: php-security/xml-unsafe-parser-flags
Language: PHP
Severity: Error
Category: Security
CWE: 611
This rule is designed to prevent potential XML External Entity (XXE) attacks, which could allow an attacker to read local files on the server, interact with any external systems that the server can access, or perform a Denial-of-Service (DoS) attack.
The LIBXML_NOENT
and LIBXML_DTDLOAD
flags in PHP’s DOMDocument
or SimpleXML
classes are particularly risky. The LIBXML_NOENT
flag allows for the substitution of XML entities by their values, while the LIBXML_DTDLOAD
flag enables loading of the XML Document Type Definition (DTD), both of which are common vectors for XXE attacks.
To avoid violating this rule, refrain from using these flags when loading XML data. Instead, use safer methods like simplexml_load_string()
without any flags, as shown in the compliant code sample. This ensures that your PHP applications are not susceptible to XXE attacks, thus enhancing their security.
<?php
class UserController extends Controller {
public function xml($input) {
$doc = new DOMDocument();
$doc->loadXML($input, LIBXML_NOENT | LIBXML_DTDLOAD);
return view('user.index', ['data' => $doc]);
}
}
<?php
class Foo extends Controller {
public function xml($input) {
$data = simplexml_load_string($xml_input);
return view('user.index', ['data' => $data]);
}
}
|
|
For more information, please read the Code Analysis documentation
Identify code vulnerabilities directly in yourVS Code editor
Identify code vulnerabilities directly inJetBrains products