热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JSLint的目的“不允许不安全的regex”选项。-PurposeofJSLint“disallowinsecureinregex”option

IhavealineofcodethatgetsthefollowingerrorwhenrunthroughJSLint:我有一行代码,在使用JSLint时得到如下错误

I have a line of code that gets the following error when run through JSLint:

我有一行代码,在使用JSLint时得到如下错误:

Lint at line 604 character 48: Insecure '^'.
numExp = parseInt(val[1].replace(/[^\-+\d]/g, ""), 10);

This error seems to refer to the following description from JSLint's option page:

这个错误似乎引用了JSLint的选项页面的以下描述:

"true if . and [^...]  should not be allowed in RegExp literals.
These forms should not be used when validating in secure applications."

I don't quite understand how a client-side Javascript application can really be considered secure. Even with the most airtight regex, it's still possible to fire up something like firebug and change the variable anyway. The real input validation should be done on the server, and the client browser should probably stick with validation that will handle the abuse of your average user.

我不太理解客户端Javascript应用程序是如何被认为是安全的。即使使用了最严密的regex,仍然可以启动firebug之类的东西并修改变量。真正的输入验证应该在服务器上完成,客户端浏览器可能应该坚持使用验证来处理普通用户的滥用。

Is it safe to ignore this error? Am I missing an angle here where my application will be insecure because of client-side input validation?

忽略这个错误安全吗?在这里,我是否缺少一个角度,使我的应用程序由于客户端输入验证而变得不安全?

2 个解决方案

#1


30  

"Insecure" means "unspecific" in this context. Both the dot . and the exclusive range [^…] are not clearly defining what should be matched by the regex. For validation purposes, this can propose the risk of successfully matching stuff that you did not think of and do not want (think: white-listing vs. black-listing).

在这种情况下,“不安全”指的是“不特定的”。这两个点。和专属范围[^…]并不明确地定义应该由正则表达式匹配。出于验证目的,这可能会导致成功匹配您没有考虑过和不想要的内容的风险(请考虑:白名单与黑名单)。

In any case, dot and exclusive range are valid parts of a regular expression, and if they do what you need (like in this case), I would think of the warning as over-cautious.

在任何情况下,点和独占范围都是正则表达式的有效部分,如果它们执行了您需要的操作(如本例中所示),我将认为警告过于谨慎。

A malicious user can fiddle with your page logic any time; the warning is more about the regular operation of the page.

恶意用户可以随时篡改您的页面逻辑;警告更多的是关于页面的常规操作。

#2


14  

All it's trying to tell you is that it's generally better to specify what can be entered instead of what can't.

它试图告诉你的是,通常最好指定可以输入的内容,而不是不能输入的内容。

In this case, your regex is actually stripping out bad characters, so it's safe to ignore the warning.

在这种情况下,您的regex实际上删除了坏字符,因此可以安全地忽略警告。


推荐阅读
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • splitjava的简单介绍
    本文目录一览:1、Javasplit方法2、 ... [详细]
  • 字面|开辟_一文入门JavaScript
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了一文入门JavaScript相关的知识,希望对你有一定的参考价值。@toc ... [详细]
  • 用JavaScript实现的太空人手表
    用JavaScript实现的太空人手表-JS写的太空人手表,没有用canvas、svg。主要用几个大的函数来动态显示时间、天气这些。天气的获取用到了AJAX请求。代码中有详细的注释 ... [详细]
  • 本文总结了Java中日期格式化的常用方法,并给出了示例代码。通过使用SimpleDateFormat类和jstl fmt标签库,可以实现日期的格式化和显示。在页面中添加相应的标签库引用后,可以使用不同的日期格式化样式来显示当前年份和月份。该文提供了详细的代码示例和说明。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文介绍了在满足特定条件时如何在输入字段中使用默认值的方法和相应的代码。当输入字段填充100或更多的金额时,使用50作为默认值;当输入字段填充有-20或更多(负数)时,使用-10作为默认值。文章还提供了相关的JavaScript和Jquery代码,用于动态地根据条件使用默认值。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • 一、正则表达式1、match()方法调用match()方法可在字符串内检索指定的值,这个校验方法有点类似于数组字符串的和`lastIndexOf()match()`返回两种结果:1 ... [详细]
  • ImtryingtoextractthetextBetClicfromthisstringpopup_siteinfo(this,clickbetclic,373 ... [详细]
author-avatar
手机用户2502898443
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有