0

SQLインジェクションまたはURLを防止または無効にするための最良の方法を知りたいです。

たとえば、www.mysite.com / profile.php?id=18です。この種のサイト(MySQL_Errorが有効になっている場合)はインジェクションに対して脆弱です。どうすればそれを防ぐことができますか?mysql_real_escape_stringは非推奨になるため、まもなく役に立たなくなります。

htmlspecialchars()を試しましたが、URLでは機能しません。

4

3 に答える 3

1

SQL インジェクションを防ぐために必要な手順はたくさんあります。

  • Web ユーザーからシステム データベース権限を削除する
  • 入力をパラメータ化する
  • ストアド プロシージャを使用する
  • 入力をきれいにして検証する
  • エラーメッセージを保護する

この件に関するこの記事をチェックしてください

http://www.codeproject.com/Articles/9378/SQL-Injection-Attacks-and-Some-Tips-on-How-to-Prev

于 2013-02-01T13:42:21.623 に答える
0

クエリで準備済みステートメントを使用する必要があります。この方法を使用すると、SQL インジェクションを防ぐことができます。

編集:

ここでは、いくつかのガイド/ドキュメントを見つけることができます:

初め

2番

于 2013-02-01T13:39:27.310 に答える
-1
  1. すべての PHP エラーをメールに報告できるものを作成します。エラーなどをより速く見つけることができ、問題があれば解決するために必要になります。(コーディングの問題は、多くの場合、セキュリティの問題でもあります) コード ボックス 1 は、tnhteam.comがエラー メールを受信するために私が書いたコードです。たとえば、email-error-handler.php という名前を付けて、サイトに含めます。
  2. サイトのすべてのページにアクセスするか、ページ数が多い場合はXenu の Link Sleuth (TM)でサイトをスキャンします。すべての問題を修復し、電子メールでエラー メッセージも確認します (初回のエラー メッセージは、スパム/ジャンク フォルダに移動し、エラー メッセージ用のフォルダを設定できます)。
  3. この後、 Beyond Security (1 ドメインは無料) に Web サイトのスキャンを依頼すると、サイトに関するすべての重要な情報と問題が検出され、見つかったすべてのエラーが修正されます。
  4. URL インジェクションの問題を解決します。コード ボックス 2 でコードを見つけてください。詳細については、コード ボックス 2 でコードを見つけたサイトにアクセスしてください。

これがあなたを正しい方向に導くのに役立つことを願っています

コード ボックス 1

<?php
//===========================================================================\\
//                                                                           \\
// Copyright (c) 2000-2015 Willem Vyent.        All rights reserved.         \\
//---------------------------------------------------------------------------\\
// http://www.tnhteam.com/                http://www.awesomehosting.org/     \\
//---------------------------------------------------------------------------\\
//                                                                           \\
//                                                                           \\
//                                                                           \\
//                                                                           \\
//         Coded by Willem Vyent                                             \\
// This program is distributed in the hope that it will be useful, but       \\
// WITHOUT ANY WARRANTY                                                      \\
//                                                                           \\
//                                                                           \\
//===========================================================================\\
if(!defined('FILE_PROTECT')) { // You should define this in your pages BEFORE you include this file 
   die('This file cannot be accessed directly!<br /><br />Dit bestand kan niet rechtstreeks worden benaderd<br /><br />Click <a href=\'http://' . $_SERVER['HTTP_HOST'] . '>here</a> to visit our homepage'); // Do not change it's a text for users who visit this document. we included a link as well...
}
    // Custom error handler - collecting information
    function awesome_error_handler($number, $message, $file, $line, $vars)

    {
$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    $email = "<p>An error known as number <strong>$number</strong> has been found on line <strong>$line</strong>, this error has been found in file <strong>$file</strong>. The requested URL with errors is $actual_link<br /><p> $message </p>";

    $email .= "<pre>" . print_r($vars, 1) . "</pre>";

    $headers = 'Content-type: text/html; charset=iso-8859-1' . "";

    // Email the error to the webmaster...
    error_log($email, 1, 'your-name@example.com', $headers); // Yor email here...

    // Make sure that you decide how to respond to errors (on the user's side)
    // Either echo an error message, or kill the entire project. It's up to you...
    // The code below ensures that we only "die" if the error was more than
    // just a NOTICE.
    if ( ($number !== E_NOTICE) && ($number < 1024) ) {
    die('Sorry, this page is broken, but our coders will fix it ASAP.'); // your message to the website user (visitor)
    }
    }
    // Tell this script to use this error handler when errors found..
    set_error_handler('awesome_error_handler');
    ?>

コードボックス 2

 <?php
 if(isset($_REQUEST["id"])){

if(!is_int($_REQUEST["id"])){

    //redirect this person back to homepage

 } else {

    $id_raw = trim(htmlentities($_REQUEST["id"]));
    $id_secure = mysql_real_escape_string($id_raw);
    $sql = "SELECT * FROM databasetable WHERE id='".$id_secure."'";

 }
}
?>
于 2015-01-29T00:15:37.227 に答える