Javascript 客户端提交了jQuery选择器,安全吗?
允许客户端提交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(将在服务器上运
$(“”)
以选择页面上的元素。参考:
在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','<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','<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;
}
}