質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

1647閲覧

クライアントからサーバサイドのデータベース書き換え

退会済みユーザー

退会済みユーザー

総合スコア0

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/12/11 13:55

LineやFacebookなど,サーバクライアントのアプリケーションはさまざまですが,内部のデータベース処理はどうなっているのでしょうか.クライアントはどのような形で,サーバにデータを送信し,サーバはデータを保管するのでしょうか.

RubyやPerlなどもあるでしょうが,触ったことがないので,PHPでお話させてください.
PHPでサーバサイドアプリケーションを設け,データベースを読み書きするとします.

PHP

1$stmt = $pdo -> prepare("INSERT INTO my_table (id, name) VALUES (:id, :name)"); 2$stmt->bindParam(':id', $name, PDO::PARAM_INT); 3$stmt->bindValue(':name', $value, PDO::PARAM_STR); 4$stmt->execute();

のような関数を”http://(Mine)/insertValue.php?id=!!!&name=!!!!!”(URL引数に限らず,POSTリクエストでも)として公開し,クライアントのブラウザや,アプリケーションからアクセスすることを考えおります.このような手法は,一般的に行われているのでしょうか.それとも,他にメジャーな手法があるのでしょうか.ご教授ください.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

そうですね。
GETやPOSTによってクライアントから与えられた情報を加工/操作するのがwebアプリケーションの基本的な動作です。
それに加えてcookieやリファラーと言ったリクエストヘッダ情報を使う事が多いです。
*その他のHTTPメソッド(DELETEやPUT等)も使用することも可能ですが、一般的なwebアプリケーションではあまり使用されるケースは見られません。
*mod_rewrite等の方法でURLをGETに変換する場合もあります。

また、クライアントからの情報は基本的に「悪意のある情報である」と考え、
入力時のバリデーション(本来持っていない情報を持っていないか、想定されない文字が含まれていないか、文字数が想定を超えていないか等)
及び
出力時のエスケープ(掲示板等ではHTMLタグを入力されてそれをそのままHTMLタグとして表示してしまうとクライアントが任意にサイトを改竄出来ることになってしまうので、HTMLタグがただの文字列として表示されるようにする等)
等の措置を取ります。

投稿2015/12/12 01:21

tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/12/12 09:31

リファラーを用いることもあるのですね!変なアクセス元を弾いて,限定的にすることができそうですね. あっさり調べてみたところでは,mod_rewriteを用いて,/mine/example.html?id=○○&name=××を/mine/○○/××.htmlにすることが可能なのでしょうか.GETリクエストは,URLによる情報漏れが怖いため,使われないのでしょうが. SQLインジェクションを知ってはおりますが,その他のWebアプリケーションセキュリティには疎いため,まだまだ勉強する必要がありますね.参考になりました.ありがとうございます!
tanat

2015/12/12 10:24

リファラーについては偽装可能なので補助的な利用とし、本当にアクセス元を制限したい場合(フォームの送信先等)はユニークなトークンを使ったりします。 mod_rewriteは提示の様な形で使用可能ですが、スクリプト側でも対応は必要です。 GETはURLの共有やブックマークが必要なところでは普通に使われています。teratailのURLもそうですね。 セキュリティについてはIPAの安全なwebサイトの作り方 https://www.ipa.go.jp/security/vuln/websecurity.html にわかりやすくまとめられているので見てみて下さい。
退会済みユーザー

退会済みユーザー

2015/12/12 13:27

”ユニークなトークン”については,どこかで見た気がします!OAuthなどでしょうか.よろしければ,参考にできそうなキーワード群をお教えください. "スクリプト側でも対応"は,「RewriteRule ^/mine/([0-9A-Za-z]+)/([0-9A-Za-z)]+)\.html$ /mine/example.cgi?id=$1&name=$2 [L]」でできるものでしょうか.通常同様にGET値を取得できそうですね. "URLの共有やブックマーク"!なるほど,そうですね!Youtubeのシークなどの共有にもこれが使われていますね. 100ページ...多いと思ったら,分かりやすく項目がまとまっていますね.ありがどうございます!参考にします.
tanat

2015/12/12 14:01

「ユニークなトークン」はワンタイムトークン等と呼ばれますね。 CSRF対策として使われることも多いので、ワンタイムトークン CSRF等で検索するといいかと思います。 ここで言うスクリプト側での対応は、全てのURLをmod_rewriteでパースしてしまった場合、それぞれ別のスクリプトで受信するのが面倒になる(機能が追加される度にmod_rewriteを記述しないといけない、など)ため、リクエストを全て一つのスクリプトで受けて実施する処理もパラメータに含ませる(所謂フロントコントローラーパターン)様な処理になります。このあたりは既存のフレームワークのルーティング機構が参考になると思います。
guest

0

データベースを書き換える機能はそれで満たすでしょうが(チュートリアルでもそうなっているものも多いですが)、個人的に思うに

  • 整合性のとられたデータを書き込もうとしているか
  • だた単にデータを出し入れするだけではない

などなどの理由で、サーバー側で何らかのデータを加工する層を設けているように思います

したがって、簡単なものであれば右から左に受け流すレベルかも知れませんが、とりあえずなにかは挟むようにしています
よく言われる「ビジネスロジック層」というのがこれに当たるのでは
※諸説あると思います

投稿2015/12/11 20:34

dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/12/12 09:38

データのチェックは必須ですね.データの出し入れには,特に注意を払って,構築する必要がありますね.書き換えの権限を持っているかのチェックもできればよいのですが... 知識不足でなかなか難しいです.このほかにも,Webセキュリティ対策としてとられている手法は様々ありますね. 参考になります.ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問