sql >> データベース >  >> RDS >> Mysql

リクエストURLでテーブル名とフィールド名を公開する

    URLとデータベースで同じ(または非常に類似した)名前を使用しても問題はありません。確かに、実装の詳細を「公開」している可能性がありますが、URLとDBで根本的に異なる名前を選択している場合は、おそらく悪い名前を選んでいます。私は一貫した命名のファンでもあります。誰もがすべてを少し違うものと呼ぶと、コーダー/テスター/顧客とのコミュニケーションがはるかに難しくなります。

    私の悩みの種は、ユーザーがデータベースに対して任意のクエリを実行できるようにしていることです。 http://.../index.php?table=users&user_id=1 、 いう?またはhttp://.../index.php?table=users&password=password (パスワードをプレーンテキストで保存する必要があるというわけではありません)?またはhttp://.../index.php?table=users&age=11

    DBに接続しているユーザーが、Webブラウザーの前に座っているユーザーと同じ権限を持っている場合は、それが理にかなっている可能性があります。通常、これは当てはまらないため、ユーザーが何であるかを認識し、表示を許可されていないレイヤーが必要になります。そのレイヤーは、ホワイトリストに登録することで正しく作成するのがはるかに簡単になります。

    (ストアドプロシージャに十分なロジックを固定している場合は機能する可能性がありますが、ストアドプロシージャは列名をハードコーディングします...)



    1. MySQLおよびGROUP_CONCAT()の最大長

    2. ランダムタプルを取得するためのTablesampleおよびその他の方法

    3. mySQLでカスタムORDERBYオーダーを定義する方法

    4. グループ化されたSQL結果の各グループの最大値を持つレコードを取得します