乐趣区

关于java:如何在Java中防御XSS攻击

从通过规范化输出的文本中检测并删除 XSS(跨站点脚本)攻打。

跨站点脚本(XSS)攻打是一种威逼模式,它利用 Web 应用程序中的破绽来掠夺用户信息。应用歹意脚本,攻击者能够通过通常可信赖的网页吸引不同的用户,并拜访该用户在浏览器中记录的任何信息,包含 cookie 和其余敏感信息。只有 Web 程序承受未经验证的用户输出并随后在其输入中应用它,就可能产生这类攻打。

采取所有必要步骤来爱护用户十分重要,对于 XSS 攻打尤其如此,因为用户可能只晓得他们对您网站的应用,而不是威逼他们的歹意行为者。而后,这可能会侵害您网站的名誉,因为用户会将任何问题与用户分割起来,并且可能不愿退货。

通过以下 API,您不仅能够检查和验证任何输出文本,还能够通过规范化删除任何检测到的攻打,从而进攻 XSS 攻打。施行这些 API 的目标不仅在于爱护您的用户,还在于爱护您的业务的合法性和名誉。

要应用以下任何 API,首先须要通过在 pom.xml 中向存储库增加 Jitpack 援用来应用 Maven 装置 SDK 库:

<repositories>
 <repository>
 <id>jitpack.io</id>
 <url>https://jitpack.io</url>
 </repository>
</repositories>

而后,咱们能够增加对依赖项的援用:

<dependencies>
<dependency>
 <groupId>com.github.Cloudmersive</groupId>
 <artifactId>Cloudmersive.APIClient.Java</artifactId>
 <version>v3.54</version>
</dependency>
</dependencies>

第一个 API 将查看任何面向用户的文本输出是否受到 XSS 攻打。这对于在进行威逼之前检测威逼很有用。要运行 API,请如上所述装置 SDK,而后调用该函数:

// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.TextInputApi;

ApiClient defaultClient = Configuration.getDefaultApiClient();
// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");
TextInputApi apiInstance = new TextInputApi();
String value = "value_example"; // String | User-facing text input.
try {XssProtectionResult result = apiInstance.textInputCheckXss(value);
 System.out.println(result);
} catch (ApiException e) {System.err.println("Exception when calling TextInputApi#textInputCheckXss");
 e.printStackTrace();}

这将返回原始输出,标准化后果,验证是否胜利以及输出是否蕴含 XSS 攻打。为确保此 API 失常运行,您须要查看是否满足某些要求:

  • 文本字符串输出正确。
  • 您曾经输出了 API 密钥。能够在 Cloudmersive 网站上收费检索此信息,整个 API 库每月提供 800 次调用。

第二个 API 通过检测和打消文本输出中的任何 XSS 攻打进一步向前迈进了一步。这是通过规范化执行的,该规范化从文本字符串中删除了所有反复的或无奈辨认的脚本。装置 SDK 之后,开始运行 API,而后调用该函数:

// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.TextInputApi;
ApiClient defaultClient = Configuration.getDefaultApiClient();
// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null
//Apikey.setApiKeyPrefix("Token");
TextInputApi apiInstance = new TextInputApi();
String value = "value_example"; // String | User-facing text input.
try {XssProtectionResult result = apiInstance.textInputProtectXss(value);
 System.out.println(result);
} catch (ApiException e) {System.err.println("Exception when calling TextInputApi#textInputProtectXss");
 e.printStackTrace();}

这将返回与以前的 API 相似的输入,然而会删除所有检测到的 XSS 攻打。

最终的 API 执行与前两个示例雷同的性能,但可用于批量查看多个输出。此 API 的参数应为按您喜爱的操作程序输出的文本项的列表。与之前的两个 API 一样装置 SDK 库,而后调用该函数:

// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.TextInputApi;
ApiClient defaultClient = Configuration.getDefaultApiClient();
// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");
TextInputApi apiInstance = new TextInputApi();
XssProtectionBatchRequest value = new XssProtectionBatchRequest(); // XssProtectionBatchRequest | User-facing text input.
try {XssProtectionBatchResponse result = apiInstance.textInputCheckXssBatch(value);
 System.out.println(result);
} catch (ApiException e) {System.err.println("Exception when calling TextInputApi#textInputCheckXssBatch");
 e.printStackTrace();}

这将返回与前两个 API 组合在一起的雷同输入,并按输出程序为每个字符串返回一个后果。

参考:《2020 最新 Java 根底精讲视频教程和学习路线!》

退出移动版