2017-05-26 3 views
-1

私は現在、同じデータを共有するWebアプリケーションとWebアプリケーション(異なるコード)を開発しており、このデータはデータベース内に保存されています。私は、このようにそれを作った:phpとmysql - これは安全ですか?

私は2つのドメイン

を持っているドメイン1は、 - >(デシベルを照会する、すなわちPHPファイル。)ユーティリティが含まれてい

ドメイン2 - >は、ウェブサイト

が含まれています

domain2私はhttp://domain1.com/utilities/php/domain2/get_from_db.phpにリクエストを送り、これは私に必要な結果を返します。

ファイルが何らかの形で公開されているため、これは安全ではないというのが私の懸念です。

以前は空のWebサイトでしたが、http://domain1.com/に移動するとファイル構造が表示されました。空のindex.phpファイルを作成しました。ファイル構造が見えなくなりました。

これはまだ実際には安全ではないという印象がありますが、私は正しいのですか?

データベースファイルは、以下の通りである:

のconfig.ini

get_from_db.php

get_from_db.phpはバックDBからのデータを接続して取得するには、このコードを持っています

header("Access-Control-Allow-Origin: http://domain2.com"); 
$db = new mysqli($host, $config['username'], $config['password'], $config['dbName'); 

if ($db->connect_errno > 0) { 
    die('Unable to connect to database [' . $db->connect_error . ']'); 
} 

if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 


class data 
{ 
    public $id = ""; 
    public $col1 = ""; 
    public $col2 = ""; 
    public $col3 = ""; 
    public $col4 = ""; 
} 

$sql = "SELECT * FROM myDb.myTable"; 
$result = mysqli_query($db, $sql) or die(mysqli_error($db)); 

$obj = array(); 

while ($row = $result->fetch_assoc()) { 
    $col1 = $row['col1']; 
    $col2 = $row['col2']; 
    $col3 = $row['col3']; 
    $col4 = $row['col4']; 

    $e = new cvdata(); 
    $e->col1 = $skills; 
    $e->col2 = $hobbies; 
    $e->col3 = $education; 
    $e->col4 = $experience; 
    array_push($obj, $e); 

} 

echo json_encode($obj); 

今、私の最後のクエストnは:

このセキュリティレベルは十分ですか? (私はログインなどについて知っているが、これは非常に単純なプロジェクトであり、誰もがWebサイトやアプリケーションを慎重に扱わないようにしようとしている。それは))、データがどのように敏感に依存して任意のヘルプ、提案やアドバイスを

おかげ

+1

あなたの質問の一部については、ディレクトリの内容を表示しないようにWebサーバーを設定する必要があります。 Apacheでは、たとえば次のようになります。https://stackoverflow.com/questions/2530372/how-do-i-disable-directory-browsing –

+0

domain2クライアントまたはサーバーで実行されるスクリプトからdomain1に要求を送信していますか?サーバから来ている場合は、リクエストで簡単なパスワード形式の認証を使用できます。彼らがクライアントから来ている場合は、ユーザーがトラフィックをキャプチャして偽装するのを防ぐために、さらに複雑なものが必要です。 – Barmar

答えて

1

すべてです。私たちがかなり深刻なデータについて話しているのであれば、私はJWT - エスクトークン認証システムを使用しようとしています。レストランのメニューカードでは、domain2cross-origin HTTP requestsとすることができる唯一の人に設定してやります。あなたはしかし、は何をすべき

は、あなたの目に見えるパスの外にconfig.iniを取るです。ファイルシステム経由でしかアクセスできないレベルに下げてください。http://domain2.com/config.ini

+0

config.iniにアクセスする唯一の方法はhttp://domain1.com/utilities/php/domain2/config.ini経由です - どうすれば私の目に見える経路から取り出せますか?このようなファイルを置くのに最適な場所はどこですか? サーバー? – Nick

+0

あなたのフォルダ構造には、 'httpdocs'や' www'などの名前のフォルダが必要です。そのフォルダ内のすべてが公開されています(保護されていない場合)。私が通常行っているのは 'www'フォルダと同じレベルに' config'というフォルダを作ります。だから私はファイルシステムを通して見つけることができますが、ブラウザでは見つけることはできません。 @Nick –

+0

ああ、ありがとう、ありがとう – Nick

関連する問題