2016-05-14 1 views
1

私はアンドロイドアプリケーションからデータを受け取るこのPHPスクリプトを持っています。このPHPスクリプトが安全であることを保証するために使用されるセキュリティメソッドは何ですか?機能のようなisset ?!PHPセキュリティJSON

<?php 
require ('config.php'); 
$connection=mysqli_connect($servername,$username,$password,$db); 
$json = file_get_contents('php://input'); 
$obj = json_decode($json,true); 
$movie_name=$obj['movie_name']; 
mysqli_query($connection,"insert into movie (movie_id, movie_name) VALUES (NULL,'$movie_name');"); 
echo "inserted"; 
?> 

ありがとうございます。

+0

準備文を使用してください。 http://php.net/manual/en/mysqli.quickstart.prepared-statements.php – chris85

+0

あなたのスクリプトはSQLインジェクションに対して脆弱であり、検証はまったくありません。また、mysqli接続を閉じる必要があります。 –

答えて

1

接続/ json_decodeが失敗しているかどうかを確認し、プリペアドステートメントを使用するためにサンプルコードを編集しました。あなたは映画の名前についていくつかの検証を行うことを検討するかもしれません。例えば、データベースフィールドの長さよりも短くなります。ただし、準備されたステートメントは、SQLインジェクションを停止する必要があります。

<?php 
require ('config.php'); 

$connection=mysqli_connect($servername,$username,$password,$db); 
if (!$connection) { 
    // mysql connection failed - error 
    exit(); 
} 

$json = file_get_contents('php://input'); 
$obj = json_decode($json,true); 

if($obj == null) { 
    // json decode failed 
    exit(); 
} 

$stmt = $connection->prepare("INSERT INTO movie (movie_id, movie_name) VALUES (NULL, ?)"); 
$stmt->bind_param('s', $obj['movie_name']); 
$stmt->execute(); 
$stmt->close(); 

echo "inserted"; 
関連する問題