問題タブ [gstring]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - Groovy/Grails でのユーザー提供の GString:s の安全でない使用
Groovy の GString の概念は非常に強力です ( http://groovy.codehaus.org/Strings+and+GStringを参照)。
GStrings を使用すると、次のようなことができます。
Groovy GString:s を使用すると、SQL インジェクション攻撃と同様にコードにセキュリティの問題が発生する可能性があるかどうかを把握しようとしています。
上記の例では、コードはプログラムの作成者によって記述されているため、System.exit(-1) コマンドの実行は、作成者の表明された意図であるため、セキュリティ上の欠陥と見なすことはできません。
ユーザー入力がフォーム フィールド (POST/GET パラメータの読み取り) とデータベース テーブル (GORM を使用) から取得される Grails Web アプリを作成しているとします。攻撃者が POST/GET リクエストとしてサーバーに送信される内容とデータベース内の内容の両方を制御すると仮定しましょう。
私のアプリのコードは次のようになります。
上記のシナリオで攻撃者がコードを実行できる方法はありますか? なんで?なぜだめですか?私の最初の仮説は、GString の使用は常に安全であるというものです。私が間違っていることを証明してください。できるだけ具体的にお願いします。
更新 #1:この質問はクライアント側ではなくサーバー側でのコード実行に関するものであるため、議論の焦点を維持するために、コード内の HTML-XSS の問題は無視してください。
更新 #2:一部の人々は、「不要な文字列を除外することは一般的に良い考え」であると指摘しています。「潜在的に悪い文字」を除外することで、確かにいくつかのクラスのセキュリティ問題を回避できるかもしれませんが、フィルタリングをしなくても安全なコードを書くほうがよいでしょう。Java JDBC API での PreparedStatements の使用法と比較できます。PreparedStatements を正しく使用すると、特定のクラスのインジェクション攻撃から保護されることが保証されます。SQL入力をフィルタリングしてもおそらく同じ結果が得られますが、PreparedStatementsを使用すると、IMHOのフィルタリングアプローチが厳密に支配されます。
python - Python の GString
Groovy には GString の概念があります。次のようなコードを書くことができます。
String 内から変数の値にアクセスできます。
Pythonでこれを行うにはどうすればよいですか?
- ありがとう
file - ファイル内の GString タグを置き換える
xml 形式で保存された word 文書があります。このドキュメントでは、$name のような GString タグがいくつかあります。
私の Groovy コードでは、xml ファイルをロードして、この GString タグを次のように置き換えます。
しかし、うまくいきません。GString タグが変数 'name' に置き換えられません。
誰でも私を助けることができますか?
THX
groovy - GroovyGStringの問題
groovyGStringで$マクロを使用したい。私がこのコードを書いたとき
['cdata','tdata'].each {
def sql = "select * from $it_1"
}
不明なプロパティ$it_でエラーが発生します
わかりました、書き直します
['cdata','tdata'].each {
def sql = "select * from ${it}_1"
}
次に、結果文字列に不要な引用符が表示されます-"select * from'cdata'_1"
質問は、GStringで$ -macroを使用して、「select *fromcdata_1」の結果文字列を取得する方法です。
grails - 次の GString で .collect() が機能しないのはなぜですか?
これは、GSP ページで期待どおりに機能します。
しかし、collectステートメントを追加すると、コードが壊れます..
と
有効な Groovy コードはすべて GString に配置でき、${ ... }
正しく評価/展開できるという印象を受けました。私は何が欠けていますか?
windows - 関数から返されるgstringの連結が空の文字列である理由-Groovy1.7.4
私は次のコードを持っています:
このコードの出力は次のとおりです。
最初の呼び出しで空の文字列が表示される理由がわかりません。改行が関数の出力を変更する理由を誰かが知っていますか?
groovy - 「gstring」と言わないようにするには?
Groovyを取り上げています。言語は問題ありません。しかし、私は非技術的な問題を抱えています。クラスの 1 つは GString と呼ばれます。文脈によっては、誤解を招く可能性があります。また、特に技術系ではない女性の同僚がいる場合は特に、オフィスではあまり適切ではありません。
これは、言語でクラスの名前を変更することを正当化するには不十分だと思います。では、GString と言いたいときに「GString」と言わないようにするにはどうすればよいでしょうか。
sql - Sql.executeのGroovyGString-テキスト変数は'で囲まれておらず、クエリは失敗します
次の問題があります。GStringをSQL.executeInsertに渡すと、テキスト変数が自動的にサワードされ'
ないため、挿入クエリが失敗します。
私が一人で置い'
た場合:
GroovyはPreparedStatementを使用してSQLクエリを実行できないため、セキュリティホールを導入したことを通知します。
Groovyにクエリ本文を正しく評価して変数を準備させる方法を誰かに説明してもらえますか?
java - 動的 GString の作成が期待どおりに機能しない
次のコードがあります。
出力は次のようになると思います。
しかし、代わりに私は持っています:
私はそれを使用してそれを達成できることを知っています:
理由はわかっていると思いますが、確実に知りたいです。