检查用户输入是否包含带有 javascript 的 <script> 标签。意外的标记 {

checking if user input includes a <script> tag with javascript. Unexpected token {

<!DOCTYPE html>
<html>
<head>
    <script>
        function XSSPrevent(){
            var usercomments = document.getElementById('usertext').value;
            if(usercomments.contains("<script>"){
                alert("Failed");
            } else
            alert("Thank you for your comments" + usercomments);
        }
    </script>
</head>
<body>
    <form>
        <input type="text" id="usertext" maxlength=50/>
        <input type="submit" value="Enter" onclick="XSSPrevent()"/>
    </form>
</body>

这是我第一次同时使用 HTML 表单和 javascript。控制台

在 if 循环后显示意外标记 {。怎么了?
我知道在这种情况下使用警报方法不是一个好主意,但我

只想快速检查我的功能。

您缺少括号:

function XSSPrevent(){
    var usercomments = document.getElementById('usertext').value;
    if(usercomments.contains("<script>")){ // <-- was missing ) here
        alert("Failed");
    } else
    alert("Thank you for your comments" + usercomments);
}

TL;DR: 前端代码只是为了制作东西 pretty/user-friendly 并为按预期使用它的人提供更好的体验。后端(即用户无法更改的部分)是处理安全性的唯一方法。


由于有人已经解决了肤浅的答案(即如何解决您现有的问题以不抛出错误),在我看来更重要的事情是强调为什么,或者更确切地说为什么不这样做。

JavaScript是前端,也就是说可以禁用甚至修改!他们可以删除您的那行代码并不受阻碍地继续进行。

想出一个后端解决方案。如果您正在处理表单,则有某种后端,它们都有检查和处理错误输入的方法。学习如何,这是值得的,而且大部分都不难。

在前端有一个功能是有意义的另外 - 如果你认为有人可能希望被允许插入脚本标签...... - 在这种情况下,您可以拥有一个功能(使用不同的名称以避免混淆),出于友好的用户体验目的,告诉他们不允许插入脚本标签。虽然我从未见过这种用例。