ホームページ  >  記事  >  バックエンド開発  >  discuz の PHP が SQL インジェクションを防ぐ function_PHP チュートリアル

discuz の PHP が SQL インジェクションを防ぐ function_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:32:22976ブラウズ

最近、私はトピック投票 Web サイトで働いていたのですが、クライアントはプログラミングについてある程度の知識を持っていました。 SQL インジェクションを防ぐために一部の文字をフィルタリングするには特別な要件があります。もともとこの分野には特別な研究はありませんでした。はは、また利用主義を推し進めてますね。 discuz フォーラムから SQL アンチインジェクション関数を入手してください。

コードをコピーします コードは次のとおりです:
$magic_quotes_gpc = get_magic_quotes_gpc();
@extract(daddslashes($_POST)); @抽出(ダッドスラッシュ($ _GET));
if(!$magic_quotes_gpc) {
$_FILES = ダッドスラッシュ($_FILES)
}


関数 ダッドスラッシュ($string, $force = 0) {
if(!$GLOBALS) ['magic_quotes_gpc'] || $force) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = godslashes($val, $ force);
}
} else {
$string =addlashes($string);
}
}
return $string;


サーバーのセキュリティを保護するために、次のコードを強化できます。 SQL インジェクションのセキュリティ関数を防ぐために PHP にとって重要です。


コードをコピー
コードは次のとおりです: /* 関数名: inject_check()
関数機能: 送信された値にSQLインジェクション文字が含まれているかどうかを検出し、インジェクションを防止し、サーバーのセキュリティを保護します
パラメータ: $sql_str : 投入された変数
戻り値 : 検出結果、true または false を返す
*/
function inject_check($sql_str) {
return eregi('select|insert|and|or|update|delete|'|/*|* | ../|./|union|into|load_file|outfile', $sql_str); // フィルター
}

/*
関数名: verify_id()
関数関数: 送信された ID クラス値が正しいかどうかを検証します
パラメータ: $id: 送信されたID値
戻り値: 処理されたIDを返す
*/
function verify_id($id=null) {
if (!$id) { exit('パラメータが送信されていません!' } / / 空かどうかの判定
elseif (inject_check($id)) { exit('提出されたパラメータが不正です!') } // インジェクションの判定
elseif (!is_numeric($id)) { exit('Submittedパラメータが不正! '); } // 数値判定

return $id;
関数名: str_check()
関数関数: string
パラメータ: $var: 処理対象の文字列
戻り値: フィルタリングされた文字列を返す
*/
function str_check( $str ) {
if (!get_magic_quotes_gpc()) { // magic_quotes_gpc
$str を開くかどうかを判断= addlashes($str); // フィルター
}
$str = str_replace("_", "_", $str) // '_' をフィルターします
$str = str_replace( "%", "%" , $str); // '%' を除外

return $str;
}

/*
関数名: post_check()
関数関数: 送信された編集コンテンツを処理する
パラメータ: $post: 送信されるコンテンツ
戻り値: $post: フィルターされたコンテンツを返します
*/
function post_check($post) {
if (!get_magic_quotes_gpc()) { // magic_quotes_gpc が開いているかどうかを判断します
$post = addlashes($post); // フィルターmagic_quotes_gpc が開かれていないときに送信されたデータ
}
$post = str_replace("_", "_", $post); // '_' を除外します
$post = str_replace("%", "%", $post) ); // '%' を除外します
$post = nl2br($post); // を入力して変換します
$post = htmlspecialchars($post) ; // HTML タグを変換します






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

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/322808.html
技術記事

最近、私はトピック投票 Web サイトで働いていたのですが、クライアントはプログラミングについてある程度の知識を持っていました。 SQL インジェクションを防ぐために一部の文字をフィルタリングするには特別な要件があります。もともとこの分野には特別な研究はありませんでした。はぁ…
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。