整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

ASP.NET Web Pages-类

ASP.NET Web Pages-类

SP.NET 类参考手册

方法描述
AsBool(), AsBool(true|false)转换字符串值为布尔值(true/false)。如果字符串不能转换为true/false,则返回 false 或者其他规定的值。
AsDateTime(), AsDateTime(value)转换字符串值为日期/时间。返回 DateTime。如果字符串不能转换为日期/时间,则返回 MinValue 或者其他规定的值。
AsDecimal(), AsDecimal(value)转换字符串值为十进制值。如果字符串不能转换为十进制值,则返回 0.0 或者其他规定的值。
AsFloat(), AsFloat(value)转换字符串值为浮点数。如果字符串不能转换为浮点数,则返回 0.0 或者其他规定的值。
AsInt(), AsInt(value)转换字符串值为整数。如果字符串不能转换成整数,则返回 0 或者其他规定的值。
Href(path [, param1 [, param2]])从带有可选的附加路径部分的本地文件路径创建一个浏览器兼容的 URL。
Html.Raw(value)Renders value 呈现为 HTML 标记,而不是呈现为 HTML 编码输出。
IsBool(), IsDateTime(), IsDecimal(), IsFloat(), IsInt()如果该值可以从字符串转换为指定的类型,则返回 true。
IsEmpty()如果对象或者变量没有值,则返回 true。
IsPost如果请求是 POST,则返回 true。(初始请求通常是 GET。)
Layout规定布局页面的路径应用到此页面。
PageData[key], PageData[index], Page在当前请求的页面、布局页面、部分页面之间包含共享数据。您可以使用动态页面来对相同的数据进行属性访问。
RenderBody()(Layout pages) 呈现没有在布局页面任何命名区域的内容页的内容Renders the content of a content page that is not in any named sections.
RenderPage(path, values)

RenderPage(path[, param1 [, param2]])

呈现使用了规定的路径和可选的额外数据的内容页。您可以通过 position(实例 1)或者 key(实例 2)从 PageData 获取额外参数的值。
RenderSection(sectionName [, required=true|false])(Layout pages) 呈现一个有名字的内容区域。设置 required让一个区域为必需非可选的。
Request.Cookies[key]获取或者设置 HTTP cookie 的值。
Request.Files[key]Gets 在当前请求中上传的文件。
Request.Form[key]获取在表单中 post 的数据(作为字符串)。Request.Form 和 Request.QueryString 都要求[key] 检查。
Request.QueryString[key]获取 URL 查询字符串中规定的数据。Request.Form 和 Request.QueryString 都要求[key] 检查。
Request.Unvalidated(key)

Request.Unvalidated().QueryString|Form|Cookies|Headers[key]

有选择地禁用请求验证(表单元素、查询字符串值、cookie、header 值)。请求验证默认是开启的,防止用户提交标记或者其他潜在的危险内容。
Response.AddHeader(name, value)在应答中添加一个 HTTP 服务器响应头。
Response.OutputCache(seconds [, sliding] [, varyByParams])Caches 在指定时间的页面输出缓存。设置 sliding 来重置每个页面的访问超时时间,设置 varyByParams 为请求页面的每个不同的查询字符串缓存不同版本的页面。
Response.Redirect(path)重定向浏览器请求到一个新的位置。
Response.SetStatus(httpStatusCode)设置HTTP状态代码发送到浏览器。
Response.WriteBinary(data [, mimetype])写入 data 内容响应可选的MIME类型。
Response.WriteFile(file)写入文件内容响应。
@section(sectionName) { content }(布局页面)定义一个有名字的内容区域。
Server.HtmlDecode(htmlText)解码一个HTML编码的字符串。
Server.HtmlEncode(text)为呈现在 HTML 标记中的字符串编码。
Server.MapPath(virtualPath)为指定的虚拟路径返回服务器的物理路径。
Server.UrlDecode(urlText)解码URL文本。
Server.UrlEncode(text)URL文本编码。
Session[key]获取或设置一个存在的值,直到用户关闭浏览器。
ToString()显示一个用字符串表示的对象的值。
UrlData[index]从 URL 获取额外的数据(例如,/MyPage/ExtraData)。

码分为很多种,针对HTML代码的编码方式是HtmlEncode

一般来说,要对抗XSS,在编码函数中,至少要实现下列内容:

&-->&

<-->&lt;

>-->&ht;

"-->&quot;

'-->&#27;

/-->&#x2F;

以下是使用JAVA代码的实现形式:

在软件、Web应用、App等程序都已经成为了企业的命脉。数据的安全一直都是企业最关心的问题。

今天给大家推荐的就是腾讯面向开发人员梳理的代码安全指南,针对API层面的风险点并提出建议和解决方案。


安全指南使用场景

安全指南涵盖非常全面,可以用于

1、日常编程参考

2、系统扫描策略

3、安全组件开发

4、安全漏洞的修复指南


安全指南分为以下级别

1、必须

2、建议

3、推荐


安全指南列表清单

1、C/C++安全指南

2、JavaScript安全指南

3、Node安全指南

4、Go安全指南

5、Java安全指南

6、Python安全指南

部分安全指南目录截图


使用安全指南

下面给大家举例几个常用安全指南。

a、【Java安全指南1】SQL语句默认使用预编译并绑定变量

Web后台系统应默认使用预编译绑定变量的形式创建sql语句,保持查询语句和数据相分离。以从本质上避免SQL注入风险。

如使用Mybatis作为持久层框架,应通过#{}语法进行参数绑定,MyBatis 会创建 PreparedStatement 参数占位符,并通过占位符安全地设置参数。

示例:JDBC

String custname = request.getParameter("name"); 
String query = "SELECT * FROM user_data WHERE user_name = ? ";PreparedStatement pstmt = connection.prepareStatement( query );pstmt.setString( 1, custname); 
ResultSet results = pstmt.executeQuery( );

Mybatis

<select id="queryRuleIdByApplicationId" parameterType="java.lang.String" resultType="java.lang.String">    
      select rule_id from scan_rule_sqlmap_tab where application_id=#{applicationId} 
</select>

应避免外部输入未经过滤直接拼接到SQL语句中,或者通过Mybatis中的传入语句(即使使用,语句直接拼接外部输入也同样有风险。例如中部分参数通过传入SQL语句(即使使用PreparedStatement,SQL语句直接拼接外部输入也同样有风险。例如Mybatis中部分参数通过{}传入SQL语句后实际执行时调用的是PreparedStatement.execute(),同样存在注入风险)。


b、【Java安全指南2】文件类型限制

须在服务器端采用白名单方式对上传或下载的文件类型、大小进行严格的限制。仅允许业务所需文件类型上传,避免上传.jsp、.jspx、.class、.java等可执行文件。参考示例:

String file_name=file.getOriginalFilename();
String[] parts=file_name.split("\.");
String suffix=parts[parts.length - 1];
switch (suffix){
      case "jpeg":
      				suffix=".jpeg";
      				break;
      case "jpg":
            suffix=".jpg";
            break;
      case "bmp":
            suffix=".bmp";
            break;
      case "png":
            suffix=".png";
            break;
      default:
            //handle error
            return "error";
}


【必须】禁止外部文件存储于可执行目录

禁止外部文件存储于WEB容器的可执行目录(appBase)。建议保存在专门的文件服务器中。

【建议】避免路径拼接

文件目录避免外部参数拼接。保存文件目录建议后台写死并对文件名进行校验(字符类型、长度)。建议文件保存时,将文件名替换为随机字符串。

【必须】避免路径穿越

如因业务需要不能满足1.2.3的要求,文件路径、文件命中拼接了不可行数据,需判断请求文件名和文件路径参数中是否存在../或..\(仅windows), 如存在应判定路径非法并拒绝请求。

c、【JavaScript安全指南1】【必须】HTML标签操作,限定/过滤传入变量值

使用innerHTML=outerHTML=document.write()document.writeln()时,如变量值外部可控,应对特殊字符(&, <, >, ", ')做编码转义,或使用安全的DOM API替代,包括:innerText=

// 假设 params 为用户输入, text 为 DOM 节点
// bad:将不可信内容带入HTML标签操作
const { user }=params;
// ...
text.innerHTML=`Follow @${user}`;

// good: innerHTML操作前,对特殊字符编码转义
function htmlEncode(iStr) {
	let sStr=iStr;
	sStr=sStr.replace(/&/g, "&");
	sStr=sStr.replace(/>/g, ">");
	sStr=sStr.replace(/</g, "<");
	sStr=sStr.replace(/"/g, """);
	sStr=sStr.replace(/'/g, "'");
	return sStr;
}

let { user }=params;
user=htmlEncode(user);
// ...
text.innerHTML=`Follow @${user}`;

// good: 使用安全的DOM API替代innerHTML
const { user }=params;
// ...
text.innerText=`Follow @${user}`;

指南获取

私信回复:1021