【お知らせ】まとめて検索などの提供終了

POSTデータの改ざんを防ぎたいです。

送信サーバから受信サーバへPOSTでデータを送信します。
受信サーバでは送信元IPアドレスが送信サーバであることを確認するアクセス制限をかけます。

POSTデータを改ざんすることはツールなどでできると思いますが、
その場合はプロキシを使うため送信元IPアドレスが送信サーバのものではなくなり、
アクセス制限で防ぐことができます。

結果として受信サーバでは送信サーバからPOSTされる改ざんされていないデータを
受け取れるとして問題ないでしょうか?

ふと不安になり質問しました。
セキュリティとして甘いなどあればご指定頂けると幸いです。
どうぞよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

全然甘いです。

プロキシサーバでコネクション中継などしなくても、
ルーティングレベルで送信元IPを維持したまま中継パケットを改ざん
することは可能です。

送受信データの改ざんを防ぎたいなら、SSL(https)で暗号化すべきです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
送信元IPを維持したまま改ざんできてしまうのですね。

SSL+受信側IP制限が一般的なかたちでしょうか。
SSLについて勉強不足のため調べたいと思います。
ご指摘頂きすごく助かります。

※来週中には締め切ります。

お礼日時:2011/05/15 01:15

こんちは



サーバ<->サーバ間のデータ転送のようですが、
まず勘違いが1点あります。

>IPアドレスが送信サーバであることを確認するアクセス制限をかけます。
>その場合はプロキシを使うため送信元IPアドレスが送信サーバのものではなくなり、

改ざん対策との事ですが、これは一般に言う「なりすまし」を想定している
とのように受け止められます。

POSTデータの改ざん対策というのは、普通はWebサーバ<->クライアント
(ブラウザ)間の話ですし、IPアドレスの変更は行われません。

POSTデータの改ざんは普通、クライアント上で悪さしてPOSTデータを
故意に書き換える場合です。

私も詳しくはないのですが、PHPでアプリを作成する場合には基本
この辺の注意が必要となります。
Javaや他の言語は私はしりません。

サーバ<->サーバ間の通信に手順としてPOSTを使用しているだけ、
ならばあまり気にするような内容では無いと私は感じますが、

ついでに参考までに、通常PHPでPOSTの改ざん対策を解説している
HPのURLを貼っておきました。

それでは

参考URL:http://www.atmarkit.co.jp/flinux/rensai/mysql5_0 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
偽の送信サーバ(クライアント)が「なりすまし」で、
受信側のアクセス制限を突破しつつ、
誤ったデータを送りつけることができるかということになりますね。

お礼日時:2011/05/17 23:08

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QリンクでPOSTデータを送信することは可能ですか?

はじめまして。
Submitボタンを使用せずに<A>リンクでFORMのPOSTメソッドデータを送信することは可能でしょうか?
やはりURLにデータを付加して送信するしかないのでしょうか?
ご教授よろしくお願い致します。

Aベストアンサー

javascript を使えば可能です。大雑把にはこんな感じ。

・パラメータが全部 hidden な form を記述しておく(ブラウザでは表示されない)
・<a href> では、その form を submit するように javascript を記述する

試してないですけど、こんな感じ。

<form name=f method=POST action="http://どこか">
<input type=hidden name=x1 value=v1>
</form>

<a href="javascript:document.f.submit()">リンクから submit</a>

Q配列をPOSTで受けとる

タイトルのまんまですが
配列をformで送って
それをPOSTで受け取りたいのですが
うまくいきません

具体的に言うと
<?php
print"<form method=POST action=action.php>";

for($i=0; $i<$n; $i++){
   print"<input type=text name=foo[$i]>";
}
print"<input type=hidden name=n value=$n>";
print"<input type=submit value=go>";
print"<form>";
?>


///////////以下action.php//////////////////
<?php
$n = $_POST["n"];
for($j=0; $j<$n; $j++){
   $foo[$j] = $_POST["foo[$j]"];
   print"$foo[$j]";
}
?>


こんな感じのことがしたいのですが
うまくいきません
どうもPOSTされてないみたいでfoo[$j]はnullです
凡ミスな気がしなくもないんですが...プログラム初心者なんで↓↓
教えてください
よろしくお願いします

タイトルのまんまですが
配列をformで送って
それをPOSTで受け取りたいのですが
うまくいきません

具体的に言うと
<?php
print"<form method=POST action=action.php>";

for($i=0; $i<$n; $i++){
   print"<input type=text name=foo[$i]>";
}
print"<input type=hidden name=n value=$n>";
print"<input type=submit value=go>";
print"<form>";
?>


///////////以下action.php//////////////////
<?php
$n = $_POST["n"];
for($j=0; $j<$n; $j++){
   $foo[$j] = $_POST["foo[$j...続きを読む

Aベストアンサー

atsuGTさんこんにちは。


受け取り側は

$foo = $_POST["foo"];

とするだけで$fooに送信された配列が格納されます。


$_POST["foo[添え字]"] ではなく、
$_POST["foo"][添え字] となります。

Qdie と exit は何が違うのでしょうか?

die と exit は何が違うのでしょうか?どういうふうに使い分けたらいいのでしょうか?

Aベストアンサー

dieはexitのシノニムです。
等価ですので、好きな方をつかってください

Q「いずれか」と「いづれか」どっちが正しい!?

教えて下さいっ!
”どちらか”と言う意味の「いずれか」のかな表記として
「いずれか」と「いづれか」のどちらが正しいのでしょう???

私は「いずれか」だと思うんですが、辞書に「いずれか・いづ--。」と書いてあり、???になってしまいました。
どちらでもいいってことでしょうか?

Aベストアンサー

「いずれか」が正しいです.
「いづれ」は「いずれ」の歴史的かな遣いですので,昔は「いづれ」が使われていましたが,現代では「いずれ」で統一することになっていますので,「いずれ」が正しいです.

QボタンをクリックでPHP文を実行

ボタンをクリックしたときのみPHP文を実行したいのですが・・・

<input type="button" onClink="<?php~?>">
でいけるかと思ったのですが、
ページ表示時に<?php~?>が実行されてしまい、うまくいきませんでした。

onClink="window.open(test.php)"
という方法以外でお願いします。

Aベストアンサー

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、遷移させることが大前提で動作します

ですから、ボタンを押してその場でJavaScriptと同じようにPHPが動くなんてことはありえません。
ボタンを押したらサーバーにリクエストする という動作ならば可能です。

つまり
質問で言われているような
onClink="window.open(test.php)"

<form name="f1" action="test.php" method="post">
<input type="submit" name="submit" value="submit" />
</form>
等のような形になります

こういった一般的な方法だと いちいち画面が切り替わったようになってしまうのを嫌って Ajaxでコレと同じことを、画面を切り替えずに行っているだけに過ぎません

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、...続きを読む

Qapacheユーザの実行権限設定はどうすれば良い?

■環境
・Cent OS

■状況
・所有者hogeのディレクトリxに対して、スクリプト経由(apacheユーザ権限)でchmodしようとすると、エラーになります
・スクリプト経由(apacheユーザ権限)でディレクトリ作成しようとしても、エラーになります

■質問
・どうすれば良いでしょうか?
・所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか?

・ディレクトリ所有者がhogeであることが問題? apache所有にした方が良い?
・それとも、スクリプト実行を、apacheユーザ権限ではなく、所有者hogeにした方が良い? どうやって?

・そもそもapacheユーザ権限は、一般的にどう設定するものなのでしょうか? rootみたいに最強にする?

Aベストアンサー

> 所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか?

基本的にはそれでOKですが、それだけではapacheユーザが作成した
ファイルをhogeユーザが変更できなくなってしまうかもしれません。

user=hoge,group=hoge
user=apache,group=apache,groups=hoge

groupは一次グループ、groups2は二次グループです。umask002 (新
規作成されたファイルのパーミッションが775 ) に設定されている
とします。

hogeユーザが作成したファイルはhoge/hoge なので、hogeグループ
に属するapacheユーザは編集可能です。しかし、apacheユーザが新
規作成したファイルはapache/apache になるので、apacheグループ
に属さないhogeユーザは編集できません。

そこで、ディレクトリをhogeユーザで作成し、ディレクトリにsgid
ビットを立てます。

$ chmod 2775 dir
$ ls -l dir
drwxrwsr-x 2 hoge hoge 4096 4月 7 13:35 dir

これで、apacheユーザがdir上に作成したファイルはapache/apache
ではなく、apache/hoge になるので、hogeユーザも編集できるよう
になります。

> 所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか?

基本的にはそれでOKですが、それだけではapacheユーザが作成した
ファイルをhogeユーザが変更できなくなってしまうかもしれません。

user=hoge,group=hoge
user=apache,group=apache,groups=hoge

groupは一次グループ、groups2は二次グループです。umask002 (新
規作成されたファイルのパーミッションが775 ) に設定されている
とします。

hogeユーザが作成したファイルはhoge/hoge なので、hogeグループ
に属するapacheユーザは編集可能...続きを読む

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います

Qインストールされているディレクトリを知るコマンドはありませんか?

phpのconfigerをするのに、
phpのインストールされているパスへ移動しなくてはいけませんが、
phpがどこにインストールされているかわかりません。

 rpm -qf php-4.0.6-7

とすると

 エラー: ファイル php-4.0.6-7: そのようなファイルやディレクトリはありません

と表示されてしまうのです。
rpmのサイトを見てオプションを設定して表示された結果から
ディレクトリを移動しても
コンフィギャーできるところに辿り着きませんでした。

どうしたらインストールされているディレクトリを
知ることができるでしょうか?

OSは以下の通りです。
AIX Version 4 もしくは LASER5 Linux release 7.2

今月が納期で生じたバグ対応のため大変困っています。
質問場所が違っていたら申し訳ないですが、
よろしくお願いいたします。

Aベストアンサー

Laser5に限っての話ですが、標準のインストールでphpはインストールされるはずですが。

# rpm -qa | grep -i php

でphpのパッケージ名は表示されませんか?

findを実行した結果、

php(コマンド)
libphp4.so(ライブラリ)
php.ini(設定ファイル)

等も見つからないのでしょうか?
もしそうならphpはパッケージもソースでもインストールされていない可能性があります。

Q文字列として"(ダブルコーテーション)を表示させる方法

こんにちは。文字列として、ダブルコーテーションを表示させるには、どうすればよいのか教えてください。m(__)m


例えば、
<font size="2">あいうえお</font>

というタグの「あいうえお」の部分が、セルA1にあった場合、

="<font size="2">"&A1&"</font>"という表示にしたいのです。

"2"のダブルコーテーションも文字列として表示させるには、どうすればよろしいのでしょうか。

教えてください。よろしくお願い致します。

Aベストアンサー

こんにちは~

表示形式は 「標準」 のままで、
ダブルコーテーションを、ダブルコーテーションで囲んでください。

""2""

="<font size=""2"">"&A1&"</font>"

としてみてください。

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。


人気Q&Aランキング