【解決方法】"リモート サーバーがエラー (404) が見つかりませんでした"


how to fix error "the remote server returned an error (404) not found". in asp.net c#

私が試したこと:

public HttpResponseMessage get(string s, string p)
{

    DataSet dt = new DataSet();
    string query = "select Email_id,Password from User_Registraction where Email_id=" + s + "and Password=" + p;
    using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["EmployeeAppData"].ConnectionString))
    using (var cmd = new SqlCommand(query, con))
    using (var da = new SqlDataAdapter(cmd))
    {
        cmd.CommandType = CommandType.Text;
        da.Fill(dt);
    }

    return Request.CreateResponse(HttpStatusCode.OK,"ok");
}

Postmen でこれをチェックすると、エラーが発生します。 他の詳細が必要な場合は、私に提案してください。

解決策 1

私たちはあなたを助けることができません: 404 エラーは、メッセージが何を意味するかを意味します – あなたは存在しないページを要求しました. そのようなエラーを生成するコードである可能性は低いです…

でも……そんなことしないで!
1) 文字列を連結して SQL コマンドを作成しないでください。 データベース全体を破壊する可能性のある、偶発的または意図的な SQL インジェクション攻撃にさらされる可能性があります。 代わりに、常にパラメーター化されたクエリを使用してください。

文字列を連結すると、SQL が次のようなコマンドを受け取るため、問題が発生します。

SQL
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'

ユーザーが追加した引用符は、SQL に関する限り文字列を終了させ、問題が発生します。 しかし、それはもっと悪いかもしれません。 代わりに「x’;DROP TABLE MyTable;–」と入力すると、SQL は非常に異なるコマンドを受け取ります。

SQL
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'

どの SQL が 3 つの別個のコマンドとして認識されるか:

SQL
SELECT * FROM MyTable WHERE StreetAddress = 'x';

完全に有効な SELECT

SQL
DROP TABLE MyTable;

完全に有効な「テーブルの削除」コマンド

SQL
--'

そして、それ以外はすべてコメントです。
一致する行を選択し、DB からテーブルを削除し、それ以外は無視します。

したがって、常にパラメーター化されたクエリを使用してください。 または、DB をバックアップから頻繁に復元する準備をしてください。 バックアップは定期的に取っていますよね?

2) パスワードをクリア テキストで保存しないでください。これは重大なセキュリティ リスクです。 ここにそれを行う方法に関するいくつかの情報があります: パスワードの保管: 方法。[^]

覚えておいてください: これは Web ベースであり、欧州連合のユーザーがいる場合は GDPR が適用されます。つまり、パスワードを機密データとして扱い、安全な方法で保管する必要があります。 テキストはそれらのどちらでもなく、罰金は….うーん…傑出している可能性があります。 2018 年 12 月、ドイツの会社は、それだけで 20,000 ユーロという比較的低い罰金を科されました。

コメント

タイトルとURLをコピーしました