個人のCMSで4つの通信社サイトを開発しました。
今、私には問題があります。誰かが私のニュースとデータベースの他のレコードを削除できます。私は
sql
私のテーブル名と長いテーブル名のプレフィックスのため、それが注入ではないことを確認してください。
とにかく、誰かがセッションを挿入してサイトの管理者側にログインする可能性はありますか?
多くのインジェクション手法は、テーブル名を知っていることに依存していません。あいまいですが単なるセキュリティであるという事実を除けば、最も簡単なのはOR 1=1
インジェクショントリックであり、パスワードチェックWHERE
が常にtrueを返すようにします(これはもちろん単純化です)
ご覧のとおり、テーブル名は必要ありません。このトリックを使用すると、人は誰でもログインできるため、これは悪名高い「セッション盗用」である可能性があります。
これは、実際の PHP セッションを盗むよりも簡単に達成できると思います。おそらく、実際のサーバーにアクセスする必要があるからです。そこにCookie盗用を含めない限り、誰かがあなたの Cookie をコピーして、自分自身をあなたのものにします。ログインが Cookie にどのように関連付けられているかによって異なります -> システムが Cookie データから新しい有効なセッションを作成する場合、問題が発生する可能性があります。クッキーを盗む方法は?クライアントは独自の Cookie を読み取ることができるため、単純な XSS (攻撃者がコードを表示させることができます) によって、不本意ながら Cookie を読み取ってどこかに投稿することができます。
要点はそれです
sql
私のテーブル名と長いテーブル名のプレフィックスのため、それが注入ではないことを確認してください。
それが2つの理由によるものではないことについては、特に確信が持てません。
通常、この組み合わせにより、SQL インジェクションのコードが簡単に開かれます。と比べて:
この資料が示すように、通常、テーブル名と長いテーブル名のプレフィックスとは何の関係もありません。
とにかく、誰かがセッションを挿入してサイトの管理者側にログインする可能性はありますか?
はい、これも可能な可能性があります。セッション固定とセッション データ インジェクションを防止する必要があります (たとえば、ファイル システム/セッション ストア上のデータの改ざんを防止します)。
あなたが尋ねたように、セキュリティの経験が豊富な開発者に連絡を取って、コードベースのレビューを依頼することをお勧めします。セキュリティはプロセスであり、通常は 4 つの目で 2 つ以上を見ることができます。また、コードを書いていない人がいて、それほど関与せず、偏見が少ないフィードバックを与えるのは良いことです。たとえば、テーブル名はSQLインジェクションを防ぐと考えていますが、それはあいまいさによるセキュリティにすぎません。