導航:首頁 > 凈水問答 > Get請求過濾特殊字元

Get請求過濾特殊字元

發布時間:2022-09-27 13:50:49

Ⅰ 在.net中怎麼樣過濾地址欄特殊字元

using System;
using System.Text.Regularexpression_rs;
using System.Web; bitscn_com

namespace FSqlKeyWord{
/// <summary>
/// SqlKey 的摘要說明。
/// </summary>
public class SqlKey{
private HttpRequest request;
private const string StrKeyWord = @"select|insert|delete|from|count(|drop table|update|truncate|asc(|mid(|char(|xp_cmdshell|exec master|netlocalgroup administrators|:|net user|""|or|and";
private const string StrRegex = @"[-|;|,|/|(|)|[|]|}|{|%|@|*|!|']";
public SqlKey(System.Web.HttpRequest _request){
//
// TODO: 在此處添加構造函數邏輯
//
this.request = _request;
}
/// <summary>
/// 只讀屬性 SQL關鍵字
/// </summary>
public static string KeyWord{
get{
return StrKeyWord;
}
}
/// <summary>
/// 只讀屬性過濾特殊字元
/// </summary>
public static string RegexString{
get{
return StrRegex;
}
}
/// <summary>
/// 檢查URL參數中是否帶有SQL注入可能關鍵字。
/// </summary>
/// <param name="_request">當前HttpRequest對象</param>
/// <returns>存在SQL注入關鍵字true存在,false不存在</returns>
public bool CheckRequestQuery(){
if (request.QueryString.Count != 0){
//若URL中參數存在,逐個比較參數。
for (int i = 0; i < request.QueryString.Count; i++){
// 檢查參數值是否合法。
if (CheckKeyWord(request.QueryString[i].ToString())){
return true;
}
}
}
return false;
}

/// <summary>
/// 檢查提交表單中是否存在SQL注入可能關鍵字
/// </summary>
/// <param name="_request">當前HttpRequest對象</param>
/// <returns>存在SQL注入關鍵字true存在,false不存在</returns>
public bool CheckRequestForm(){
if (request.Form.Count > 0){
//獲取提交的表單項不為0 逐個比較參數
for (int i = 0; i < request.Form.Count; i++) {
//檢查參數值是否合法
if (CheckKeyWord(request.Form[i])){
//存在SQL關鍵字
return true;

}
}
}
return false;
}

/// <summary>
/// 靜態方法,檢查_sword是否包涵SQL關鍵字
/// </summary>
/// <param name="_sWord">被檢查的字元串</param>
/// <returns>存在SQL關鍵字返回true,不存在返回false</returns>
public static bool CheckKeyWord(string _sWord){
if (Regex.IsMatch(_sWord, StrKeyWord, RegexOptions.IgnoreCase) || Regex.IsMatch(_sWord, StrRegex))
return true;
return false;
}

/// <summary>
/// 反SQL注入:返回1無注入信息, 則返回錯誤處理
/// </summary>
/// <returns>返回1無注入信息,否則返回錯誤處理</returns>
public string CheckMessage(){
string msg = "1";
if (CheckRequestQuery()) //CheckRequestQuery() || CheckRequestForm(){
msg = "<span style='font-size:24px;'>非法操作!<br>";
msg += "操作IP:" + request.ServerVariables["REMOTE_ADDR"] + "<br>";
msg += "操作時間:" + DateTime.Now + "<br>";

msg += "頁面:" + request.ServerVariables["URL"].ToLower() + "<br>";
msg += "<a href="#" onclick="history.back()">返回上一頁</a></span>";
}
return msg.ToString();
}
}
}

Ⅱ Linux curl,https get 地址里有特殊字元怎麼處理

先試試非特殊字元是否OK;如果OK,那應該就是url encode的問題了。建議最後的URL用引號引起來:
https://192.168.1.23:443/bmsc/\\\~\_\!\@\$\^\&\*.xml
非特殊字元的是OK的。

「 建議最後的URL用引號引起來:
https://192.168.1.23:443/bmsc/\\\~\_\!\@\$\^\&\*.xml 」
是這樣嗎:
curl --data-urlencode "\\~\_\!\@\$\^\&\*.xml" --cacert /var/ca-pem/ca-bundle-for-cdn.pem --digest 「https://192.168.1.23:443/bmsc/\\\~\_\!\@\$\^\&\*.xml 」
引用 3 樓 xiaoxiao_0223 的回復:非特殊字元的是OK的。

「 建議最後的URL用引號引起來:
https://192.168.1.23:443/bmsc/\\\~\_\!\@\$\^\&\*.xml 」
是這樣嗎:
curl --data-urlencode "\\~\_\!\@\$\^\&\*.xml" --cacert /var/ca-pem/ca-bundle-for-cdn.pem --digest 「https://192.168.1.23:443/bmsc/\\\~\_\!\@\$\^\&\*.xml 」

注意中英文,最好用單引號,雙引號的話Shell還是會解析的。
引用 4 樓 lishanchao 的回復:Quote: 引用 3 樓 xiaoxiao_0223 的回復:
非特殊字元的是OK的。

Ⅲ java io 讀入文件 怎麼過濾特殊字元

1.io只能在讀完之後才能對讀出來的數據String數組繼續判斷。讀完之後循環進行過濾

Ⅳ 請問PHP怎麼過濾GET或者POST的參數防止js注入,或者一些html注入請請提供代碼參考謝謝!

string mysql_real_escape_string ( string unescaped_string [, resource link_identifier])

本函數將來 unescaped_string 中的特殊字元自轉義,並計及連接的當前字元集,因此可以安全用於 mysql_query()。
注: mysql_real_escape_string() 並不轉義 % 和 _。
例子 1. mysql_real_escape_string() 例子
<?php
$item = "Zak's and Derick's Laptop";
$escaped_item = mysql_real_escape_string($item);
printf ("Escaped string: %s\n", $escaped_item);
?>
以上例子將產生如下輸出:
Escaped string: Zak\'s and Derick\'s Laptop

Ⅳ Linux curl,https get 地址里有特殊字元怎麼處理

先試試非特殊字元是否OK;如果OK,那應該就是url encode的問題了。
建議最後的URL用引號引起來:
https://192.168.1.23:443/bmsc/\\\~\_\!\@\$\^\&\*.xml
非特殊字元的是OK的。

「 建議最後的URL用引號引起來:
https://192.168.1.23:443/bmsc/\\\~\_\!\@\$\^\&\*.xml 」
是這樣嗎:
curl --data-urlencode "\\~\_\!\@\$\^\&\*.xml" --cacert /var/ca-pem/ca-bundle-for-cdn.pem --digest 「https://192.168.1.23:443/bmsc/\\\~\_\!\@\$\^\&\*.xml 」
引用 3 樓 xiaoxiao_0223 的回復:非特殊字元的是OK的。

「 建議最後的URL用引號引起來:
https://192.168.1.23:443/bmsc/\\\~\_\!\@\$\^\&\*.xml 」
是這樣嗎:
curl --data-urlencode "\\~\_\!\@\$\^\&\*.xml" --cacert /var/ca-pem/ca-bundle-for-cdn.pem --digest 「https://192.168.1.23:443/bmsc/\\\~\_\!\@\$\^\&\*.xml 」

注意中英文,最好用單引號,雙引號的話Shell還是會解析的。
引用 4 樓 lishanchao 的回復:Quote: 引用 3 樓 xiaoxiao_0223 的回復:
非特殊字元的是OK的。

「 建議最後的URL用引號引起來:
https://192.168.1.23:443/bmsc/\\\~\_\!\@\$\^\&\*.xml 」
是這樣嗎:
curl --data-urlencode "\\~\_\!\@\$\^\&\*.xml" --cacert /var/ca-pem/ca-bundle-for-cdn.pem --digest 「https://192.168.1.23:443/bmsc/\\\~\_\!\@\$\^\&\*.xml 」
注意中英文,最好用單引號,雙引號的話Shell還是會解析的。

這個含特殊字元的URL解析不了,主要是因為有了一個反斜杠在裡面,當沒有反斜杠時是可以正常 get的,最後找到了解決的方法,不過是個比較笨的方法,命令是這樣的,用 反斜杠 encode的值代替 加到URL裡面:
curl -v -G --cacert /var/ca-pem/ca-bundle-for-cdn.pem --digest https://MPD-IS-01:443/bmsc/%5C\~_\!\@\$\^\&\*%23.xml -o sa003.xml
這里沒有再用 --data-urlencode 這個參數了,因為 --data-urlencode後會在你的URL後面會多出一個問號:?;而是直接先將"\\" encode,方法如下:
curl -v -G --cacert /var/ca-pem/ca-bundle-for-cdn.pem --digest https://MPD-IS-01:443/bmsc/ --data-urlencode "\\"
用上面的命令可以得到"\\"的 Unicode編碼,會在命令下直接打出來的,能看到是"%5C",得到這個值後,直接替換URL裡面的反斜杠就好了。

Ⅵ java過濾特殊字元的問題

"+"在URL中會被當作空格處理。
必須使用URLEncoder將其變成URL編碼。
或者使用 javascript 的 encodeURIComponent(url) 函數對URL進行編碼轉換。

Ⅶ Spring特殊字元處理

在使用Spring或Spring Boot時一些特殊的參數會被轉義,或者因轉義導致出現異常情況,本文匯總總結相關問題及解決方案,幫助大家快速定位和解決問題。

問題一:參數特殊符號被後端轉義

WEB開發時,前端通過get/post方法傳遞參數的時,如果實參附帶特殊符號,後端接收到的值中特殊符號就會被轉義。

例如請求: http://localhost:10001/demo/index?name= 張三(1)

後端接收到的name值中「(」和「)」被轉義。

針對此問題有以下解決方案:

1、檢查web.xml里是否配置了過濾特殊字元的filter,若不需要可以關掉此filter。

2、java中可以使用org.apache.commons.lang包中的public static String unescapeHtml(String str)方法來進行解碼。實踐中嘗試了很多方法沒有解決,最後使用了該方法,將接收到的包含特殊字元的字元串通過該方法進行解碼。

3、在Controller接收的參數前加上@RequestBody註解,示例如下:

@PostMapping(value = "/add")
@ResponseBody
public String addMessage(@RequestBody ParamVo params) {
}
通常情況下,基於RESTful的API經常使用@RequestBody來自動綁定body中的請求參數到實體類對象。使用@RequestBody能解決大多數情況的問題,但某些特殊字元依舊無法正常解決,還需要通過方案二進行補充解決。

使用該中方案進行數據交互時,前度對應的請求需要 聲明dataType和contentType,傳遞的參數並用JSON.stringify()轉為json字元串。

$.ajax({
url: CONTEXTPATH + "/add",
type: 'POST',
dataType: 'JSON',
contentType : 'application/json',
data: JSON.stringify(Data),
success: function (data) {
}
})
問題二:/被轉義成%2F導致400錯誤

前端GET請求url中帶有路徑參數,參數中有/特殊字元,前端已經轉義成了%2F,後端springboot並沒有收到這個請求,直接返回了400的錯誤。

原因:據說是tomcat默認是不支持轉義的,需要手動設置一下轉化,搜索tomcat的設置可以找到,但在springboot中內置的tomcat,在yml中找不到相關的配置。

解決方案:修改啟動類,添加系統參數並重寫WebMvcConfigurerAdapter的configurePathMatch方法。

@SpringBootApplication
public class Application extends WebMvcConfigurerAdapter {
public static void main(String[] args) throws Exception {
System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");
SpringApplication.run(Application.class, args);
}
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
UrlPathHelper urlPathHelper = new UrlPathHelper();
urlPathHelper.setUrlDecode(false);
configurer.setUrlPathHelper(urlPathHelper);
}
}
其中實現WebMvcConfigurerAdapter介面新版本中改為實現WebMvcConfigurer介面。重寫的方法名稱是一樣的。該部分也可以單獨在WebMvc的配置類中實現,而不是放在啟動類。

當然,設置tomcat的參數是需要寫在main方法當中進行設置的。

問題三:整合jackson的轉義

Spring Boot默認配置json轉換工具就是Jackson, 如果你此時使用的正是Jackson框架,那麼可在配置文件中進行是否轉義的配置,配置項如下:

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

spring.jackson.serialization.indent_output=true

spring.jackson.serialization.fail_on_empty_beans=false

spring.jackson.defaultPropertyInclusion=NON_EMPTY

spring.jackson.deserialization.fail_on_unknown_properties=false

spring.jackson.parser.allow_unquoted_control_chars=true

spring.jackson.parser.allow_single_quotes=true
其中重點關注allow_unquoted_control_chars項的配置。

當然,相應的配置如果是在配置類中實現的自定義ObjectMapper,可以在自定義時進行設置:

@Configuration
public class JacksonConfig {

}
在類中做過修改中, 配置文件中的配置將不再起作用。

問題四:接收JSON時發生轉義字元綁定對象失敗

在做Spring boot 項目時發生json轉義字元綁定對象失敗,原因是json裡面有些欄位包括空格,反斜杠等,如果框架沒有對這些json進行轉化時,就會報類似如下錯誤
org.codehaus.jackson.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 9)): has to be escaped using backslash to be included in string value
at [Source: java.io.StringReader@10cfc2e3 ; line: 1, column: 2461]

解決辦法:

1、pom.xml文件增加fastjson依賴。

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
如果項目中已經引入則無需新增該依賴。

2、增加配置類

@SpringBootApplication
public class JsonController extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(
SerializerFeature.PrettyFormat
);
fastConverter.setFastJsonConfig(fastJsonConfig);
converters.add(fastConverter);
}
}
這里的配置方法同問題二中的一樣,新版本Spring Boot 通過WebMvcConfigurer介面來完成。

Ⅷ PHP if ($_GET['key'] 過濾

如果是特殊的需要key匹配的特點去寫正則匹配.例如

$w='kjhgerz123z1iuhiugerhhg';
$s='kjhgerz2z1iuhiugerhhg';
$m='/z[0-9]{2,}/';
if(preg_match($m,$w)){
echo"出現關鍵字";
}else{
echo"關鍵字未出現過";
}
if(preg_match($m,$s)){
echo"出現關鍵字";
}else{
echo"關鍵字未出現過";
}
閱讀全文

與Get請求過濾特殊字元相關的資料

熱點內容
豪爵踏板車空氣濾芯在哪裡 瀏覽:808
油箱過濾網如何拆 瀏覽:569
森森外置過濾桶不吸水 瀏覽:42
飛力污水泵型號1330H 瀏覽:483
黑色手錶白色水垢 瀏覽:438
空氣凈化器沒有激活卡怎麼辦 瀏覽:221
石材工業廢水處置 瀏覽:130
snf納濾和ro反滲透區別 瀏覽:94
康達源子母凈水器多少錢一台 瀏覽:489
魚缸下過濾加氧泵么 瀏覽:987
純水怎麼進入罐裝水 瀏覽:182
lexy萊克空氣凈化器怎麼清潔 瀏覽:312
飲水機里的小風扇怎麼修 瀏覽:73
tcl空氣凈化器有味道怎麼辦 瀏覽:39
反滲透水是不是酸性水 瀏覽:525
廚房飲水機開不了窗怎麼辦 瀏覽:882
類似於飲水機的東西是什麼 瀏覽:419
超濾膜設計參數 瀏覽:563
辦理edi許可證的必要性 瀏覽:565
飲水機一桶是多少 瀏覽:791