3
XSSとSQLインジェクションを防止するプログラミング言語はまだありますか?XSS、SQLインジェクションを許可しないプログラミング言語
私の考えは、コンテキストを認識し、必要に応じて正しくエンコードするものです。たとえば、SQL関数の呼び出しで文字列が使用された場合、引用符で囲まないように指定しない限り、引用符で囲みます。また、変数を文字列に置くと、HTML属性でコードが見つかったかどうかを知り、完全にフォーマットされたHTML(スペースと折り返しがない)、またはCSS、Scriptというコンテキスト認識コードが使用されます。
このような言語は存在しますか?
- は、あなたがそう言っていない限り、
- は(少なくともHTML、スクリプト)異なるコンテキストのための考慮事項を含む、デフォルトでエンコードしていることの一つ
- それは
- 、コンパイル時にすべてのコンテキストアウェアものをいバイトコードにコンパイルする必要はありません。普及している高水準言語がそうです。
これは、*言語*の誤った配置のようです。任意の汎用言語は、汎用目的の文字列連結をサポートする必要があります。間違いは、人々がこれを使ってさまざまな種類の注射がしやすい弦を作り上げることです。この問題は、プリペイドド・ステートメントやテンプレート言語を含む、より特殊化されたツールを使用して解決されています。 – deceze
修正します。エンコードされていない連鎖をサポートする必要があります。この考え方は、SQL呼び出しで使用されるかWebページ呼び出しで印刷されるかに基づいて、デフォルトでエンコードされます。エンコーディングを無効にするオプションが必要になることがあります。しかし、私は、テンプレート言語はおそらく正解に最も近いものだと思います。 –
@deceze:猫をスキンするための方法が1つあります(つまり、汎用のプログラミング言語でHTMLフラグメントを扱う)。たとえば、HTMLの抽象構文をデータ型として表すことで埋め込むことができます。 –