1

私は数学の先生です。学校のウェブサイトを使用して、生徒が紙で個別に与えられた一連のテストの質問に対する正しい解決策があるかどうかを確認できるようにしたいと思います。生徒に解答を入力できるテキストボックスと、それが正しいかどうかを確認するために押すボタンを提供したかったのです。正解すると、質問などの横に「正解」アイコンが表示されます。私は完全な初心者ですが、これまでのところ管理しています。

<script>
function check(z)
{
var ans = new Array
ans[0]="522"
ans[1]="144"

if (document.getElementById('response'+z).value==ans[z])
{
document.getElementById('correct' + z).style.visibility='visible'
document.getElementById('incorrect' + z).style.visibility='hidden'
}
if (document.getElementById('response'+z).value!=ans[z] && document.getElementById('response'+z).value!='')
{
document.getElementById('correct' + z).style.visibility='hidden'
document.getElementById('incorrect' + z).style.visibility='visible'
}
if (document.getElementById('response'+z).value=='')
{
document.getElementById('correct' + z).style.visibility='hidden'
document.getElementById('incorrect' + z).style.visibility='hidden'
}
}
</script>

<img id="correct0"src="correct.jpg"style="visibility:hidden"/>
<img id="incorrect0"src="incorrect.jpg"style="visibility:hidden"/>
1a  
<textarea style="width: 100px; height: 20px;"id="response0"></textarea>
<button style="height: 20px"onclick="check(0)">check</button>
<br></br>

<img id="correct1"src="correct.jpg"style="visibility:hidden"/>
<img id="incorrect1"src="incorrect.jpg"style="visibility:hidden"/>
1b  
<textarea style="width: 100px; height: 20px;"id="response1"></textarea>
<button style="height: 20px"onclick="check(1)">check</button>
<br></br>

これは機能しますが、明らかに非常に不格好です(実際、Excelスプレッドシートを使用してHTMLコードを生成しました)。私の質問は次のとおりです。JavaScript自体を使用してテキストボックスとボタンを生成できますか?正解を難読化できますか(生徒が私のWebページのソースを表示する方法を知っている場合、それは私の試験のゲームオーバーです!)。

多くの感謝と最高の願い、

4

2 に答える 2

3

理想的には、サーバー側でソリューションを生成して検証します。それが不可能な場合は、ページにハッシュライブラリへの参照をドロップし、暗号化ハッシュに対して回答を検証します。

https://code.google.com/p/crypto-js/

スプレッドシート、または同じハッシュライブラリを使用して独自の質問生成ページでハッシュを生成する必要があります。

しかし、注意してください!生徒がJavaScriptに精通している可能性がある場合でも、JavaScriptコンソールを簡単に開いて、ブルートフォース攻撃を行うことができます。合理的な答えが数値で100万未満になる傾向があると仮定すると、それはかなり些細なことです...

...もう1つ注意点があります。回答がオープンテキストフィールドの場合は、チェックする前に入力を「正規化」する必要があります。余分なスペースや句読点などを削除します。

于 2013-03-25T22:12:09.510 に答える
2

JavaScriptで難読化することは実際には不可能です。難読化ツールはありますが、同時に難読化解除機能もあります(生徒の知識によっては、これが代替手段になる場合があります)

編集:これは難読化ツールの例です: http ://www.daftlogic.com/projects-online-javascript-obfuscator.htm 、そしてGoogleの閉鎖も見ることができます:http://closure-compiler.appspot最小化と「難読化の種類」のための.com/homeしかし、私が悲しいことに、ほとんど何でも元に戻すことができます。

入力フィールドとボックスなどの生成に関しては、jQueryを確認する必要があります:http://jquery.com/-最初は少し混乱するかもしれませんが、非常に簡単で、タスクに非常に役立ちますこのような。

トピックをもう少し深く理解した場合は、サーバー側での回答の検証を検討することをお勧めします(そのため、YouTubeのユーザーはコードを読み取ることができません)。思ったほど難しくはありませんが、今のところjQueryがその役割を果たします。

私はあなたのプロジェクトが好きです、私は私がその日にこのような先生がいたらいいのにと思います:)

于 2013-03-25T22:04:18.753 に答える