Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 客户端提交了jQuery选择器,安全吗?_Javascript_Jquery_Security_Xss_Jquery 1.8 - Fatal编程技术网

Javascript 客户端提交了jQuery选择器,安全吗?

Javascript 客户端提交了jQuery选择器,安全吗?,javascript,jquery,security,xss,jquery-1.8,Javascript,Jquery,Security,Xss,Jquery 1.8,允许客户端提交jQuery选择器是否安全 我将运行一个可能由巨魔提交的选择器字符串,并将其放入$(“”)以选择页面上的元素。参考: 在HTML元素上指定时,id属性值必须是唯一的 在元素树中的所有ID中,必须至少包含 一个字符。该值不得包含任何ASCII空格 大多数情况下,ID是字母和数字,带有连字符或下划线。此代码要求id的第一个字符是字母,后面是更多的字母、数字、下划线和破折号 如果您愿意以这种方式限制可访问元素ID,那么可以使用以下验证方案来防止XSS JavaScript(将在服务器上运

允许客户端提交jQuery选择器是否安全

我将运行一个可能由巨魔提交的选择器字符串,并将其放入
$(“”)
以选择页面上的元素。

参考:

在HTML元素上指定时,id属性值必须是唯一的 在元素树中的所有ID中,必须至少包含 一个字符。该值不得包含任何ASCII空格

大多数情况下,ID是字母和数字,带有连字符或下划线。此代码要求id的第一个字符是字母,后面是更多的字母、数字、下划线和破折号

如果您愿意以这种方式限制可访问元素ID,那么可以使用以下验证方案来防止XSS

JavaScript(将在服务器上运行)

var i,l;
提交的var选民=[“警告”(“ha”);”,“,“天竺葵”,”https://www.example.com","等",;
l=提交的选民。长度;
对于(i=0;i
PHP

<?php

$submittedSelectors = ['<script>alert("ha");</script>','<img src="bogus.com?img=5">','geraniums','https://www.example.com','&lt;etc'];

foreach ($submittedSelectors as $ss) {
        validate($ss);
}

function validate($submitted = '') {
        $selector = filter_var($submitted,
                        FILTER_VALIDATE_REGEXP,
                        ['options' => ['regexp' => '/^[a-z][\w-.]{1,64}$/i' ]]);

        if (empty($selector)) {
                echo htmlentities($submitted).' is not valid'.PHP_EOL;
                return false;
        } else {
                echo $selector.' is okay'.PHP_EOL;
                return true;
        }
}

可能要阅读此保险柜?这实际上是在服务器上,因为客户端数据总是可以被操纵的。@PHPglue不是真的,XSS可以在用户不知道的情况下将密钥记录引入到您的页面中,这只是一个例子。如果客户机可以提交其他人使用的jquery选择器,那么就有可能对其进行转义,并注入更多只影响该特定客户机的JSF,而不影响服务器上站点的完整性。准备MySQL语句。您可以验证字符串。我认为只要一切都在客户端运行,就不会有任何安全问题。注射XSS的人只会伤害自己。
<?php

$submittedSelectors = ['<script>alert("ha");</script>','<img src="bogus.com?img=5">','geraniums','https://www.example.com','&lt;etc'];

foreach ($submittedSelectors as $ss) {
        validate($ss);
}

function validate($submitted = '') {
        $selector = filter_var($submitted,
                        FILTER_VALIDATE_REGEXP,
                        ['options' => ['regexp' => '/^[a-z][\w-.]{1,64}$/i' ]]);

        if (empty($selector)) {
                echo htmlentities($submitted).' is not valid'.PHP_EOL;
                return false;
        } else {
                echo $selector.' is okay'.PHP_EOL;
                return true;
        }
}