This rule prohibits the construction of SQL queries from unsanitized input. This is crucial because it helps prevent SQL Injection attacks, a common and serious security vulnerability where an attacker can manipulate SQL queries to gain unauthorized access to a database or perform malicious actions.
In a SQL Injection attack, an attacker can insert malicious SQL code into input fields, which can then be executed by the database if the input is not properly sanitized. This can lead to data theft, data corruption, or even loss of control over the database.
To avoid this, it’s important to use prepared statements or parameterized queries, which can ensure that user input is always treated as literal data and not part of the SQL command. In PHP, you can use the prepare and bind_param functions of the mysqli extension to create safe SQL queries. For example, instead of concatenating user input into the query string, you should use placeholders (like :username and :password in the example) and then bind the actual user input to these placeholders.
Non-Compliant Code Examples
<?php$username=$_POST['username'];$password=$_POST['password'];$query="SELECT * FROM users WHERE user = '".$username."' AND pass = '".$password."'";$statement=$conn->query($query);
Compliant Code Examples
<?php$username=$_POST['username'];$password=$_POST['password'];$query="SELECT * FROM users WHERE user = :username AND pass = :password";$statement=$conn->prepare($query);$statement->bind_param(":username",$username);$statement->bind_param(":password",$password);$statement->execute();$statement->store_result();
원활한 통합. Datadog Code Security를 경험해 보세요
Datadog Code Security
이 규칙을 사용해 Datadog Code Security로 코드를 분석하세요
규칙 사용 방법
1
2
rulesets:- php-security # Rules to enforce PHP security.
리포지토리 루트에 위의 내용을 포함하는 static-analysis.datadog.yml을 만듭니다
무료 IDE 플러그인을 사용하거나 CI 파이프라인에 Code Security 검사를 추가합니다