像Medium这样的许多编辑都提供格式化.从我在DOM中看到的,它只是添加HTML.但是,如何在不丢失用户应用的格式的情况下清理此类输入?
例如,点击粗体添加:
<strong class="markup--strong markup--p-strong">text</strong>
但如果用户自己输入,则不想渲染.那有什么不同呢?如果您使用markdown进行样式但也不允许用户输入自己的markdown但只能通过浏览器访问它,那也会有所不同吗?
我能想到的一种方法是,逃避每个HTML特殊字符,但这看起来很奇怪.据我所知,只有在输出内容时才对内容进行消毒
我通常使用此函数来清理表单输入,然后将它们存储到我的数据库中:
//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
Run Code Online (Sandbox Code Playgroud)
直到今天,我还没有意识到mysql_real_escape_string需要数据库连接,因为我在将数据存储到数据库之前清理数据时只使用了它.
我尝试在联系表单上使用该功能,并得到"无法建立到服务器的链接"错误.我可以连接到数据库,但没有必要,因为我只是在通过联系表单发送到我的电子邮件之前尝试清理数据.
清理未存储在mysql数据库中的数据的最佳方法是什么?这些数据是否仍需要清理?
我目前正在使用Ruby on Rails创建API.我只是想知道是否有内置的Rails方法或库/ gems来清理Json和SQL,或者Rails 4是否默认执行此操作?我最担心的是我有一个SQL语句,例如
User.where("users.first_name IS NOT NULL")
Run Code Online (Sandbox Code Playgroud)
或类似的东西
Event.where(:location => params[:location]).
Run Code Online (Sandbox Code Playgroud)
从本质上讲,我应该在SQL语法和传入的JSON请求中注意什么?
sanitize()在ApplicationHelper不关闭标签.
s = "<a href='http://example.com'>incomplete"
sanitize(s, :tags => ['a', 'p'])
Run Code Online (Sandbox Code Playgroud)
上面的代码片段保留了字符串.我怎么能强迫它附加一个关闭</a>或至少剥离<a>完全?
我想知道使用Codeigniter清理用户输入的最佳做法是什么.
我知道CI提供了form_validation,例如set_rules.
'set_rules'=>'trim|xss_clean|alpha_numeric|htmlspecialchars'
Run Code Online (Sandbox Code Playgroud)
"任何接受一个参数的本机PHP函数都可以用作规则,如htmlspecialchars,trim,MD5等."
我现在的问题是,
这足以保护我们免受xss,sql注入攻击等?
我可以申请哪些其他规则?
在绩效方面,我们将所有这些规则应用于所有投入是否代价高昂?
我理解MD5是一个哈希函数,但是如果你将MD5设置为规则的一部分会发生什么?
以上我也添加了javascript验证.我是否正确处理消毒输入和验证用户输入?请指教.
我创建了这个HTTP处理程序来更新本地SQL Express数据库中的信息.
我意识到用户可以使用相对URI路径"/../../file.zip"作为查询字符串,并且能够下载受限区域之外的文件.
该网站尚未生效,所以现在不是安全问题,但我真的想要阻止这样的事情.
我添加了一个简单的string.replace行,它从输入查询中删除任何"..".
我还有什么需要做的吗?
public void ProcessRequest(HttpContext context)
{
string filesPath = "C:/Downloads/";
string fileName = context.Request.QueryString["filename"];
fileName = fileName.Replace("'", "''").Replace("..", "").Replace("/", "").Replace("\\", "");
if (!string.IsNullOrEmpty(fileName) && File.Exists(filesPath + fileName))
{
context.Response.ContentType = "application/octet-stream";
context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", fileName));
context.Response.WriteFile(filesPath + fileName);
//Do work to update SQL database here
}
else
{
context.Response.ContentType = "text/plain";
context.Response.Write(filesPath + fileName + " Invalid filename");
}
}
Run Code Online (Sandbox Code Playgroud) 我喜欢Sanitize.这是一个惊人的实用程序.我唯一的问题就是它需要永远准备一个开发环境,因为它使用了Nokogiri,这对编译时来说很痛苦.是否有任何程序可以执行Sanitize所做的事情(如果没有其他事情,除了它的作用之外)还没有使用Nokogiri?这将有助于指数级!
我已经使用PHP一段时间了,我开始问自己,我是否养成了良好的习惯.
其中一个是我所相信的,包括过度使用PHP清理方法,例如,一个用户通过表单注册,我得到以下帖子变量:
$_POST['name'],$_POST['email']和$_POST['captcha'].现在,我通常做的事情显然是清理我要放入MySQL的数据,但是在比较验证码时,我也会对它进行清理.
因此我相信我误解了PHP消毒,我很好奇,除了使用它在MySQL中放置东西之外,还有其他任何需要消毒数据的情况(注意我知道还需要消毒以防止XSS攻击).此外,我的习惯是消毒几乎所有来自用户输入的变量,一个糟糕的变量?
我正在从第三方导入HTML片段并将其嵌入到我的Angular 7应用程序之外的某个占位符中.有一个链接从javascript:片段内部开始,unsafe:将由Angular 作为前缀,这会破坏其功能.
Angular 的DOMSanitizer似乎只提供绕过HTML字符串安全性的方法.但是,在下面的方法中,我只是读取DOM节点并将其附加到不同的目的地.所以我需要一个DOM节点的解决方案.
根据我的研究,插入的节点在appendChild调用后可以直接运行,但是在Angular添加之后几毫秒unsafe:.
如何绕过DOM节点的安全性?
private insertPart(componentImportLinkId: string, targetSelector: string): void {
try {
const linkElement: any = document.getElementById(componentImportLinkId);
const componentContent = linkElement.import;
const componentTemplate = componentContent.querySelector('template');
const importedComponentTemplateClone = document.importNode(componentTemplate.content, true);
const appendToElement = document.querySelector(targetSelector);
appendToElement.appendChild(importedComponentTemplateClone);
} catch (e) {
console.error(`PortalLayoutComponent.insertPart: Can not insert '${targetSelector}'`, e);
}
}
Run Code Online (Sandbox Code Playgroud) 我在使用 Angular 8 进行样式清理时遇到问题。我多次使用 ngStyle,但这次我无法设置元素的边框td。
我正在尝试根据字段设置边框样式。如果该字段有与我相关的内容,那么我会突出显示它,否则我不会突出显示。我不知道该字段可能值的数量,也不知道确切的值:它完全是动态的,我只知道我感兴趣的值。
我从.ts文件内的函数返回边框样式。以下是代码片段:
<ng-container matColumnDef="{{cam}}">
<th mat-header-cell *matHeaderCellDef class="header"> {{cam}} </th>
<td mat-cell *matCellDef="let piano" class="cellaMagazzino" [ngStyle]=" {'border':shouldHighlight(piano[cam])}">
<div>
<!--content-->
</div>
</td>
</ng-container>
Run Code Online (Sandbox Code Playgroud)
我的打字稿函数如下所示:
shouldHighlight(element){
if (this.listaCommittenti == undefined && this.listaNumOrdine == undefined) {
let found = this.releventContentList.find(item => item.property == element.property)
let result = found != undefined ? '3px solid ' + this.myVariable["color"] : ""
return result
}
Run Code Online (Sandbox Code Playgroud)
我其他时候使用 ngStyle 调用函数,但在这种情况下我收到错误:
警告:清理不安全样式值 3px 实心 rgb(241, 196, 15)(请参阅http://g.co/ng/security#xss)。
是否需要进行某种配置?有解决方法吗?
sanitize ×10
security ×4
php ×3
html ×2
javascript ×2
ruby ×2
angular ×1
angular8 ×1
asp.net ×1
c# ×1
codeigniter ×1
contact-form ×1
editor ×1
forms ×1
httphandler ×1
json ×1
mysql ×1
ng-style ×1
sanitization ×1
sql ×1
styles ×1
validation ×1