Skip to content

Instantly share code, notes, and snippets.

Avatar
🏠
Working from home / Living at work

Alexandru Puiu scattered-code

🏠
Working from home / Living at work
View GitHub Profile
View enumeration-prevention.cs
try
{
using (var client = _clientFactory.CreateClient("captcha"))
{
var response = await client.PostAsync("recaptcha/api/siteverify", new FormUrlEncodedContent(new Dictionary<string, string> { { "secret", _captchaSettings.Value.Secret }, { "response", model.Token }, { "remoteip", Request.HttpContext.Connection.RemoteIpAddress?.ToString() } }), ct);
response.EnsureSuccessStatusCode();
var captchaResponse = await response.Content.ReadAsAsync<CaptchaResponse>(ct);
if (!captchaResponse.Success)
{
ModelState.AddModelError(nameof(model.Email), "Invalid captcha");
View finally.cs
finally { RunningRequests.Remove(HttpContext.Connection.RemoteIpAddress.ToString(), out var _); }
View wait.cs
await Task.Delay(3000, ct);
View runningrequests.cs
while (!RunningRequests.TryAdd(HttpContext.Connection.RemoteIpAddress.ToString(), true)) await Task.Delay(3000, ct);
View runningrequests.cs
private static ConcurrentDictionary<string, bool> RunningRequests = new ConcurrentDictionary<string, bool>();
View cloudflare-photos-proxy.js
addEventListener("fetch", (event) => {
event.respondWith(
handleRequest(event.request).catch(
(err) => new Response(err.stack, { status: 500 })
)
);
});
async function handleRequest(request) {
const { pathname, searchParams, host } = new URL(request.url);
View block-warnings.txt
! 2020-12-02 https://twitter.com
twitter.com##.r-1ny4l3l.r-1wbh5a2.r-16y2uox.css-1dbjc4n > .css-1dbjc4n > div.css-1dbjc4n > div.css-1dbjc4n > .css-1dbjc4n > .r-1g94qm0.css-1dbjc4n > .r-qvutc0.r-1w50u8q.r-m611by.r-1inuy60.r-bcqeeo.r-ad9z0x.r-16dba41.r-a023e6.r-1qd0xha.r-1loqt21.r-1n1174f.r-qklmqi.r-rull8r.r-j7yic.css-901oao.css-18t94o4.css-4rbku5
twitter.com##.r-1mi0q7o.r-1777fci.r-16y2uox.r-1iusvr4.css-1dbjc4n > div.css-1dbjc4n > div.css-1dbjc4n > .css-1dbjc4n > .r-1g94qm0.css-1dbjc4n > .r-qvutc0.r-1w50u8q.r-m611by.r-1inuy60.r-bcqeeo.r-ad9z0x.r-16dba41.r-a023e6.r-1qd0xha.r-1loqt21.r-1n1174f.r-qklmqi.r-rull8r.r-j7yic.css-901oao.css-18t94o4.css-4rbku5
twitter.com##.r-qvutc0.r-1w50u8q.r-m611by.r-1j3t67a.r-1inuy60.r-bcqeeo.r-ad9z0x.r-16dba41.r-a023e6.r-1qd0xha.r-1loqt21.r-1n1174f.r-5kkj8d.r-1efd50x.r-mxfbl1.css-901oao.css-18t94o4.css-4rbku5
View mailgun.cs
using (var httpClient = new HttpClient())
{
var authToken = Encoding.ASCII.GetBytes($"api:{_emailSettings.Value.ApiKey}");
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(authToken));
var formContent = new FormUrlEncodedContent(new Dictionary<string, string> {
{ "from", $"{_emailSettings.Value.DisplayName} <{_emailSettings.Value.From}>" },
{ "h:Reply-To", $"{_emailSettings.Value.DisplayName} <{_emailSettings.Value.ReplyTo}>" },
{ "to", email },
{ "subject", subject },
View startup.cs
public void ConfigureServices(IServiceCollection services)
{
...
services.AddMvc();
services.Configure<FormOptions>(x =>
{
x.MultipartBodyLengthLimit = 209715200;
});
}
View program.cs
...
.UseKestrel(options =>
{
options.Limits.MaxRequestBodySize = 209715200;
});
...