ホームページ >バックエンド開発 >PHPチュートリアル >PHP における一般的な SQL 攻撃正規表現のまとめ、SQL 正規表現_PHP チュートリアル
この記事の例では、PHP での一般的な SQL 攻撃の正規表現について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
MYSQL 5 以降では、information_schema ライブラリにすべてのライブラリ名、指示、およびフィールド名の情報が格納されることはすでにご存知です。したがって、攻撃方法は次のとおりです。
1. 最初のテーブル名の最初の文字が a ~ z の文字であるかどうかを確認します。ここで、blind_sqli は想定される既知のライブラリ名です。
注: 正規表現の ^[a-z] は、文字列の開始文字が a-z の範囲内にあることを意味します
2. 最初の文字が a-n の文字であるかどうかを判断します
3. キャラクターがnであることを確認します
4. 式は以下のように置き換えられます
コードをコピーします
コードをコピーします
同様に、PHP には PHP エラー処理機構があり、set_error_handler() を使用して PHP エラー処理を受信したり、trigger_error() 関数を使用して主にエラー メッセージを出力したりすることもできます。
set_error_handler() 関数は、ユーザー独自のエラー処理関数を設定し、実行中のユーザー独自のエラー処理メソッドを設定します。
関連する使用法:
复制代码
代番号如下:
まとめ
PHP でエラーが発生すると、エラー スクリプトの場所、行番号、および理由が表示されますが、これは大したことではない、と多くの人が言います。しかし、実際のパスが漏洩した場合の影響は、一部の侵入者にとっては想像を絶するものであり、実際、多くのサーバーがこの問題を抱えています。 ネットワーク管理者の中には、PHP 設定ファイルの display_errors を Off に設定するだけで問題を解決する人もいますが、この方法はあまりにも消極的すぎると思います。場合によっては、デバッグのために PHP がエラー情報を返す必要があることがあります。また、何か問題が発生した場合は、ユーザーに説明したり、別のページに移動したりする必要がある場合もあります。しかし、set_error_handler() を使用すると、これらの矛盾を解決できます。しかし、この機能はほとんど使用されていないことがわかりました。
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
$sql='
存在しない場合はテーブルを作成しますuploadtype(
id int(11) NOT NULL AUTO_INCREMENT,
title varchar(20) DEFAULT '0',
sydefault char(1) DEFAULT '0' ,
PRIMARY KEY (id )
) ENGINE=MyISAM
';
preg_match('#CREATE TABLE.*\(.*\)ENGINE=MyISAM#isU',$sql,$typefile);
var_dump($typefile);
SQL 分類:
DDL—データ定義言語 (CREATE、ALTER、DROP、DECLARE)
DML—データ操作言語 (SELECT、DELETE、UPDATE、INSERT)
DCL—データ制御言語 (GRANT、REVOKE、COMMIT、ROLLBACK)
まず、基本的なステートメントについて簡単に説明します。
1. 説明: データベースを作成します
CREATE DATABASE データベース名
2. 説明: データベースを削除します
データベース dbname を削除します
3. SQL サーバーをバックアップします
---バックアップ データ用のデバイスを作成します
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- バックアップを開始します
BACKUP DATABASE pubs TO testBack
手順: 新しいデバイスを作成します。 table
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
既存のテーブルに基づいて新しいテーブルを作成します:
A: tab_old のようにテーブル tab_new を作成します (古いテーブルを使用します) table を作成して新しいテーブルを作成します)
B: tab_old 定義のみからテーブル tab_new を選択します
5. 説明: 新しいテーブルを削除します。drop table tabname
6. 列を追加します
テーブル tabname を変更して列を追加します。 type
注: 列を追加すると、削除することはできません。 DB2 では、列の追加後にデータ型を変更することはできません。変更できるのは、varchar 型の長さを増やすことだけです。
7. 手順: 主キーを追加: テーブルのタブ名を変更して主キーを追加(列)
手順: 主キーを削除: テーブルのタブ名を変更して主キーを削除
手順: インデックスを作成: タブ名に [一意の] インデックス IDxname を作成します。 (col ….)
インデックスの削除: インデックス idxname を削除します
注: インデックスを変更したい場合は、削除して再構築する必要があります。
9. 手順: ビューを作成します: select ステートメントとしてビュー viewname を作成します
ビューを削除します: ビュー viewname を削除します
10. 手順: いくつかの簡単な基本 SQL ステートメント
Select: select * from table1 where range
Insert: insert into table1( field1,field2)values(value1,value2)
削除: table1 から削除 where range
Update: table1 を更新 set field1=value1 where range
Search: select * from table1 where field1 like '%value1%' ---似た構文洗練された情報をチェックしてください!
Sort: select * from table1 order by field1,field2 [desc]
Total: select count(*) as totalcount from table1 from totalcount
Sum: select sum(field1) as sumvalue from table1
Average: select avg (フィールド 1) テーブル 1 の平均値として
最大...残りのテキスト>>