ホームページ > バックエンド開発 > PHPチュートリアル > PHP アンチインジェクション攻撃体験_PHP チュートリアル

PHP アンチインジェクション攻撃体験_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:08:56
オリジナル
704 人が閲覧しました

phpのアンチインジェクション攻撃の経験

一:

このトピックはありきたりすぎます。
PHP.INI で magic_quotes_gpc = On を設定します
確かに一部の注射攻撃を防ぐことができますが、万能なのでしょうか?
現在、POST または GET で受け取った変数を変換し、スペース、句読点、特殊文字を HTML エンコーディングに変換しています。
デモ中に復元します。どうやってコードを共有しましたか?

それでも、SQL が標準化された方法で記述されていない場合、union ステートメントを防ぐことはできません。 たとえば、select * from news where id=$Id、変数 $Id が小さな引用符で囲まれておらず、$Id が数値文字列であるかどうかが判断されない場合は、たとえ magic_quotes_gpc = であっても、間違いなく挿入されます。オン

インジェクションを完全に防ぐ唯一の方法は、SQL ステートメント内で変数を小さな引用符で囲み、その後
magic_quotes_gpc = オンにすると、スペース、句読点、特殊文字が HTML エンコードに変換されます。
これで一旦解決すると思いますが、網をすり抜けた魚がいるかどうかはわかりませんが、現在開発中のシステムで注射が不要になれば、安心して眠れます。はは

通常、各ページで関数を直接使用して、_get、_post、_session およびその他のデータを最初にフィルターします

データベースに書き込むときはデータ型を確認することが必須です~

基本的に、これらは一般的な注射効果に適しています

1 SQL ステートメントは、sprintf を使用してクエリを実行するのが最適です

2 ログインテストを行うときは、ある値を使用して別の値を取得し、それを比較するのが最善です


例:

はは、それは私が挙げた例です。丁寧にまとめてみましたが、注射されないのはとても簡単です。

概要は以下の通りです

magic_quotes_gpc = On がオンになっている場合、変数を小さな引用符で囲む必要があるため、変数に小さな引用符を追加する必要があります。突破は、magic_quotes_gpc = On でエスケープされます。引用は失敗しました。悪いことはできません。
もう一つのポイントは、MYSQL には # と /* という 2 つのコメント マークがあり、これによって次の SQL 言語名をコメントアウトし、この 2 つの文字を ASC コードまたは HTML コードに変換できます。
そして攻撃を注入する親はスペースです。
たとえば、スペースを削除または変換する場合は、select * from news where id=1 Union select * from admin となります。
select * from news where id=1unionselect*fromadmin となり、データを盗んだ結果になります。
select * from news where id=1; テーブルニュースをドロップ ここでスペースを削除します。 select * from news where id=1; は実行できません。
したがって、インジェクション攻撃の親はスペースです。スペース置換後。本当に安心して眠れます


http://www.bkjia.com/PHPjc/629798.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629798.html技術記事 PHP でのインジェクション攻撃の防止に関する経験: このトピックはありきたりすぎます。PHP.INI で magic_quotes_gpc = On を設定すると、確かに一部のインジェクション攻撃を防ぐことができますが、それは現在... です。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート