过滤select列表

html页面中,如果select列表的option太多,会给选择带来一定的麻烦,我从这儿发现一个js库(下载),它允许你根据输入的关键字对option元素进行过滤。

下面是一段示例代码(demo):

html页面

<select size="5">
    <option>one</option>
    <option>two</option>
    <option>three</option>
    <option>four</option>
    <option>five</option>
</select>
<br/>
<input value="search"/>

js片段(jQuery不是必须的)

var myfilter = new filterlist($("select")[0]);
$("input").focus(function() {
    this.value = ""
}).keyup(function() {
    myfilter.set(this.value)
})​

以及一小点css

select{
    width:6em;
}

input{
    width:6em;
}
​

使用分析:

1、先获取select元素

2、将返回的select元素传递给filterlist构造函数,创建一个filterlist对象

3、在filterlist对象上设定要过滤的文本值

4、okay。更多特性请查看原文


笔者刚才试着用jQuery写了一个作用和filterlist类似的代码(demo),其它部分不变,js代码如下

var $options = $("select").clone();
$("input").focus(function() {
    this.value = ""
}).keyup(function() {
    $("option").remove();
    var key=this.value?":contains("+this.value+")":"";
    $options.children(key).clone().appendTo($("select"));
})​

惊讶地发现:

1、在chrome下,设置option元素的style.display=none,不会隐藏该option元素(其它浏览器没做测试,欢迎给出你的试验结果)

2、在keyup函数中,如果不使用clone方法($options.children(key).clone()),$options变量中保存的某些元素会在调用remove($("option").remove();)时,也被remove掉(我想这是因为附加到$("select")对象上的元素是$options对象内元素的引用,当然,引用的都是option)。

在SQL注入中,过滤select关键字是常见的安全措施之一。然而,有一些方法可以绕过这种过滤。一种方法是在过滤过滤的关键词前面加上URL编码的空字节%00。这是因为在C/C++中,空字节代表语句的结束,而SQL语句对空字节的解释则不同,它会继续执行后面的代码。因此,通过在select关键字前面加上%00,可以绕过过滤器的select关键字过滤\[2\]。 另外,还有一些其他的绕过方法可以用于绕过select关键字的过滤。例如,可以使用联合查询来绕过过滤器。通过在注入点处构造一个合法的联合查询语句,可以绕过select关键字的过滤,并执行自定义的SQL语句。例如,可以使用以下语句来绕过select关键字的过滤,并执行查询操作: ?id=-1' union select 1,group_concat(schema_name),3 from information_schema.schemata --+ 这个语句使用了联合查询来获取数据库中的所有模式名称,并将结果以逗号分隔的形式返回\[3\]。 总结起来,绕过select关键字的过滤可以使用URL编码的空字节%00或者联合查询等方法。然而,需要注意的是,进行SQL注入攻击是非法的行为,应该遵守法律法规,不进行未经授权的测试或攻击。 #### 引用[.reference_title] - *1* *2* [SQL注入绕过关键词过滤的小技巧及原理(union select为例)](https://blog.csdn.net/weixin_54848371/article/details/120423529)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [sql注入原理](https://blog.csdn.net/xg_ren/article/details/79354364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值