getCookieValue からのデータを検証する必要があります。数値が必要な場合は、返される値が数値であることを確認してください。また、フィールドにエスケープ文字 (javascript から抜け出す引用符など) が含まれていないことを確認してください。これを修正すると、次のようになります。
function is_valid(value) {
// Do some check here depending on what you're expecting.
// I also recommend escaping any quotes (i.e. " becomes \")
// Ideally, you'd just whitelist what is acceptable input (A-Z0-9 or whatever,
// and return false from this function if something else is present in
// value!)
}
var cookie_value = getCookieValue('fieldval');
if(is_valid(cookie_value)) {
document.write('<input type="hidden name="field1" value="' + cookie_value + '" />');
}
簡単に言えば、document.write を実行する前にデータをサニタイズするか、反映された XSS が発生するようにします。
上記のコメントで述べたように、ユーザー自身の Cookie (ユーザー自身が変更したもの) に由来する XSS は、特に心配する必要はありません。ただし、これにつながるコーディング慣行は、他の場所に存在する可能性があります。ソースを確認し、ユーザーからのすべての入力が信頼できないものとして扱われ、適切にサニタイズされるようにすることをお勧めします。